Zitat von
DeddyH:
Wenn Du das jetzt auch noch nachvollziehen kannst, sind ja alle zufrieden
Werde mir das auf jeden Fall noch durcharbeiten. Klar, wenn X und Y relativ zum Formular zu betrachten sind, dann entsprechen X und Y der Strecke der Mausbewegung und die Richtung müsste sich dann mit dem Vorzeichen ergeben.
Left + X - DeltaX
Left + Y - DeltaY
In FormMouseDown werden DeltaX,DeltaY vorzeichengerecht ermittelt. Dann kommt die fragliche Berechnung.
Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssLeft in Shift then
begin
Left := Left + X - DeltaX;
Top := Top + Y - DeltaY;
end;
end;
Wie sind X und Y hier zu interpretieren?
Habe soeben mal die Addition von X und Y entfernt (auskommentiert). Da funktioniert die Verschiebung nicht mehr.
Und egal wei ich die Maus bewege, X und Y werden immer hinzu addiert. Das erkläre ich mir damit, das DeltaX,DeltaY wirklich die Differenz zur vorherigen Mausposition ist, während X und Y in FormMouseMove die aktuellen X,Y Werte der Mausposition sind.