Thema: Delphi Fenster verschieben?

Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#20

Re: Fenster verschieben?

  Alt 12. Sep 2009, 11:59
Um wieder zur eigentlichen Aufgabenstellung zurückzukehren: die generelle Vorgehensweise wurde mindestens 2 mal bereits genannt. Hier etwas ausführlicher: im Ereignis OnMouseDown, das ausgelöst wird, sobald auf dem Formular eine Maustaste gedrückt wird, merkst Du Dir den aktuellen Punkt des Mauszeigers (die X- und Y-Koordinate werden freundlicherweise bereits als Parameter übergeben) in einer globalen Variablen (@all: keine Meckereien jetzt!!). Dabei solltest Du aber auswerten, welche Maustaste gedrückt wurde, was wiederum im Button-Parameter steht, dieser sollte für die linke Maustaste mbLeft sein. In Pseudo-Code sieht das dann so aus:
Delphi-Quellcode:
var MausPos: TPoint;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: integer);
begin
  wenn Button mbLeft ist
    MausPos ist der Punkt(X,Y)
end;
Im MouseMove-Ereignis wiederum kannst Du nun die Differenz zwischen den einzelnen Koordinaten errechnen und die Eigenschaften Top bzw. Left des Formulars so setzen, dass der Mauszeiger wieder an der gemerkten relativen Position innerhalb des Formulars steht (auch in diesem Ereignis werden wieder X und Y übergeben). Ob die linke Maustaste dabei gedrückt ist, kannst Du feststellen, indem Du prüfst, ob ssLeft in der Menge Shift enthalten ist.
Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: integer);
begin
  wenn ssLeft in Shift enthalten
    Left ist gleich Left + Differenz aus X und MausPos.X
    Top ist gleich Top + Differenz aus Y und MausPos.Y
end;
Ich hoffe, das war ein halbwegs verständlicher Ansatz. Versuch es einfach einmal auf diesem Wege, falls Du nicht klarkommst, helfen wir gerne weiter.
Sollte ich hier Fehler gemacht haben (da aus dem Kopf getippt), bitte ich einen Wissenden um Korrektur.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat