Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Panel proportional zu Mauszeiger bewegen (https://www.delphipraxis.net/119556-panel-proportional-zu-mauszeiger-bewegen.html)

Larsi 28. Aug 2008 08:27


Panel proportional zu Mauszeiger bewegen
 
Hi,
ich habe vor, dass wenn man mit dem Mauszeiger auf ein Panel drückt und die Maus bewegt, dass dann das Panel proportional zum Mauszeiger bewegt wird. Ein Beispiel: Wenn ich den Masuzeiger um 5 Punkte nach links verschiebe soll sich das Panel auf um so viele Punkte nach links verschieben. Bis jetzt habe ich folgendes gemacht aber der Effekt ist nicht der gleiche, da es hier nur richtig funktioniert wenn man halt den Mauszeiger oben links in der Ecke des Panels hat und dann verschiebt. Wenn man zum Beispiel mitten in der Mitte des Panels drückt und verschiebt soll nicht gleich die obere linke Ecke des Panels zum Mauszeiger wanderen sondern das Panel soll sich jetzt halt proportional zum Mauszeiger wie schon beschrieben z.B. 5 nach links bewegen wenn das der Mauszeiger macht egal wo der auf dem Panel ist.

Ich hoffe Ihr könnt mir helfen und versteht wie ich das meine.



Delphi-Quellcode:
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if ssLeft in Shift then begin
Panel1.Left := ScreenToClient(Mouse.CursorPos).x;
Panel1.Top := ScreenToClient(Mouse.CursorPos).y;
end;


MFG Lars Wiltfang

Namenloser 28. Aug 2008 08:29

Re: Panel proportional zu Mauszeiger bewegen
 
Ist eigentlich ganz einfach:
Du merkst dir beim Drücken der Maustaste die Koordinaten des Cursors relativ zum Panel und ziehst sie dann nachher beim Bewegen einfach wieder ab.

DeddyH 28. Aug 2008 08:31

Re: Panel proportional zu Mauszeiger bewegen
 
Geht es nur um das Verschieben eines Panels zur Laufzeit? Wenn ich mich recht entsinne, geht das so:
Delphi-Quellcode:
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if ssLeft in Shift then
    begin
      ReleaseCapture;
      Panel1.Perform(WM_SYSCOMMAND,$F012,0);
    end;
end;

Larsi 28. Aug 2008 08:33

Re: Panel proportional zu Mauszeiger bewegen
 
Danke DeddyH, funktioniert Super :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz