Hallo,
bin noch immer beim Nachvollziehen meines Quelltextes. Zum besseren Verständnis habe ich den Hinweis von @NamenLozer aufgegriffen. Ich habe also die bisherigen DeltaX,DeltaY Variablen in StartX und StartY umbenannt, weil diese Werte unabhängig von der Bewegungsrichtung der Maus immer positiv sind. Danach müssten DeltaX,DeltaY die Differenz zum Startpunkt in FormMouseDown und dem aktuellen Punkt in FormMouseUp bzw. FormMouseMove sein.
Der folgende Quelltext zeigt mir aber in FormMouseUp den Wert 0 für DeltaX und DeltaY an. Irgendwas habe ich da doch noch nicht verstanden. Bitte helft mir noch mal. Hier sind meine Änderungen.
Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssLeft in Shift Then
begin
Left := Left + X - StartX;
Top := Top + Y - StartY;
end;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var P: TPoint;
begin
StartX := X; StartY := Y;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
DeltaX := X - StartX;
DeltaY := Y - StartY;
lbMouseX.Caption := IntToStr(DeltaX);
lbMouseY.Caption := IntToStr(DeltaY);
end;