###################################################################
EDIT SIZE RATIO
Das Größenverhältnis zweier Multiedits oder Listboxen durch Ziehen
mit der Maus einstellen.
Copyright Sven Bader 2004
Dieser Quelltext ist Freeware. Bei Verwendung bitte Quelle angeben.
Kritik und Anregungen an: http://www.svenbader.de
Für eventuell auftretende Schäden wird keine Haftung übernommen.
###################################################################
DEF GetKeyState(1) !USER32,GetKeyState
DEF GetCursorPos(1) !USER32,GetCursorPos
DEF GetWindowRect(2) !USER32,GetWindowRect
declare a&,b&,mousepos#,x&,y&,a#,b#,drag%,cur%,start%,a%[2,2],b%[2,2]
dim mousepos#,8
dim a#,16
dim b#,16
SetTrueColor 1
WindowStyle 24
WindowTitle Editbox Seitenverhältnis
Window (%MaxX / 2 - 320), (%MaxY / 2 - 240) - 640,480 Fenster in Bildschirmmitte anzeigen
cls rgb(192,192,192)
UseFont Verdana,13,0,0,0,0
SetDialogFont 1
SetErrorlevel 0 Wichtig wegen negativer Fenstergröße
Proc Drag Größe der Edits ändern
a%[2,1] = a%[2,1] + (x& - start%)
b%[1,1] = b%[1,1] + (x& - start%)
b%[2,1] = b%[2,1] - (x& - start%)
SetWindowPos a& = a%[1,1],a%[1,2]-a%[2,1],a%[2,2];0
SetWindowPos b& = b%[1,1],b%[1,2]-b%[2,1],b%[2,2];0
start% = x&
EndProc
Größe und Position der beiden Edits
a%[1,1] = 4
a%[1,2] = 48
a%[2,1] = 310
a%[2,2] = 380
b%[1,1] = 320
b%[1,2] = 48
b%[2,1] = 310
b%[2,2] = 380
create(Text,%hwnd,Verschiebung zweier MultiEdits in Echtzeit ohne SplitBar. Ganz wie im Explorer!
Fragen, Kommentare oder Verbesserungsvorschläge an http://svenbader.de,5,10,600,32)
a& = create(MultiEdit,%hwnd,,a%[1,1],a%[1,2],a%[2,1],a%[2,2])
b& = create(MultiEdit,%hwnd,,b%[1,1],b%[1,2],b%[2,1],b%[2,2])
While %scankey <> 27
sleep 20 CPU Entlasten
GetCursorPos(mousepos#)
x& = Long(mousepos#,0) Maus Position X
y& = Long(mousepos#,4) Maus Position Y
Position und Größe der Editfelder in Bereiche schreiben. GetWindowRect eignet sich sehr gut, da es
so wie die Mauskoordinaten auf die absolute Position auf dem Desktop bezieht.
GetWindowRect(a&,a#)
GetWindowRect(b&,b#)
If (x& > Long(a#,8)) & (x& < Long(b#,0)) & (y& > Long(a#,4)) & (y& < Long(b#,12)) Maus zwischen Editfeldern
If (GetKeyState(1) > 1) & (drag% = 0) Maustaste gedrückt und Zieh-Modus noch nicht aktiv
start% = x&
UseCursor 9
cur% = 1
drag% = 1
Else
cur% = 1
UseCursor 9 nichts gedrückt, nur Icon zeichnen
Endif
ElseIf (GetKeyState(1) > 1) & (drag% = 1) Im Zieh-Mouds? Editgrößen mit dem Drag-Proc anpassen
cur% = 1
UseCursor 9
Drag
Else
nichts gedrückt? Wieder Zieh-Modus beenden und alten Cursor herstellen.
case cur% : UseCursor 0 Cursor bereits wieder normal?
drag% = 0
cur% = 0
Endif
EndWhile
Dispose a#
Dispose b#
Dispose b#
Dispose mousepos#