Code: Alles auswählen
procedure MyVisibleControl.MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
if MouseL then
begin
if ContainsMouse(X,Y) then
begin
FMouseMoved := true;
FDeltaX := X - FStartX;
FDeltaY := Y - FStartY;
OutTextXY(MouseX,MouseY+20,'DELTAX = '+IntToStr(FDeltaX)+' DELTAY = '+IntToStr(FDeltaY));
// FRight := FRight + FDeltaX; Habe ich schon entfernt.
// FBottom := FBottom + FDeltaY;
// FLeft := FLeft + FDeltaX;
// FTop := FTop + FDeltaY;
end;
end;
end;
Im Hauptprogramm könnte dieses Stück Code noch relevant sein:
Code: Alles auswählen
If (oldx<>mousex) or (oldy<>mousey) then begin //Mausbewegung kann ausgewertet werden
//Do Something
//Zum Beispiel Test ausgeben oder mein Control zeichnen
fcontrol.OutTextXY(MouseX,MouseY,'Maus bewegt!');
//Und die Mausbewegung erfassen und X,Y speichern um delta zu ermitteln
fcontrol.MouseMove(frame,0,MouseX,MouseY);
Oldx:=mousex;
Oldy:=mousey;
if not ButtonUp then
begin
x := x + fcontrol.DeltaX;
y := y + fcontrol.DeltaY;
end;
Warum verhält die sich so, dass das Verschieben sich verhält als ob ich an einem Gummiband ziehen würde?
Ich will das Control so verschieben wie das auf der heutigen GUI überall geht.
Was muss ich da anders machen?