das habe ich auch mal gemacht.
Ich hab's so gelöst:
Man setzt im OnMouseDown-Event eine Point-Variable, die die aktuelle Position
relativ zum Fenster festlegt. Also die X und Y-Variablen aus dem Event nehmen. Diese Variable muss natürlich global sein
Dann macht man im OnMouseMove einfach die Position des Fensters (Top- und Left-Properties, Integer) als obsolute Position der Maus (auf dem ganzen Desktop) minus das, was im OnClick gespeichert wurde.
Wenn also ClickedPos deine Point-Variable ist sieht's so aus:
Quelltext
1: 2:
| Form1.Left := Mouse.X - ClickedPos.X; Form1.Top := Mouse.Y - ClickedPos.Y; |
Sinnvoll ist natürlich, im Onclick eine Boolean-Variable zu setzen, und diese dann im OnMouseMove-Event abzufragen, damit man auch nur verschiebt, wenn die Maus wirklich gedrückt ist. Diese Variable ist normalerweise False, wird beim OnMouseDown auf True gesetzt und beim OnMouseUp wieder auf False. In obiges Beispiel kommt dann einfach nur
Quelltext
1: 2: 3:
| if Variable then begin ... end; |
So eifnach kann man eine Form ohne Rand bewegen. Wenn man dann noch den Cursor der Form auf diese 4 Pfeile verändert, weiß auch der Anwender sofort, daß man da was bewegen kann.
Tschüß
Thomas
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk.