Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Panel und MouseMove (https://www.delphipraxis.net/142001-panel-und-mousemove.html)

js747a 20. Okt 2009 14:10


Panel und MouseMove
 
Hallo Leute, Ich habe ein Panel mit darauf ein TImage komponente, und andere elemente .
Mit dem OnMouseMove ereignis von TPanel (TLokPanel) kann ich das Panel verschieben.

procedure TLokPanel.MouseMove(Shift: TShiftState; X, Y: Integer);
Begin
if ssLeft in Shift then
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND,$F012,0);
end;
End;

Jetzt kommt meine Frage.
Ich habe auf demPanel ein Bild in einem TImage. Wie kan ich das Panel verschieben wenn
ich die mouse auf dem Image verschiebe.
Ausserhalb des Bildes (TImage ) bleibt nicht mehr viel Platz um mit der Mouse zu klicken.
TImage wird während der Laufzeit beim erstellen von TPanel erstellt.

Procedure TLokPanel.Create(Owner: TComponent);
Begin
inherited Create(Owner);
//LokImage
LokImage:=TImage.create(Self); LokImage.Parent:=Self;
LokImage.Top:= SpeedLabel.Top+ SpeedLabel.Height + 3;
LokImage.Left := Scrollbar.Left + Scrollbar.Width + 5 ;
LokImage.Height:= 100;
LokImage.Width:= Width-Scrollbar.Width - 10;
LokImage.Proportional:=True;

End;

Ich musste jetzt eine Mousemove procedur in LokImage einfugen, die das Mousemove ereignis von
TLokPanel aufruft.

Habe es versucht mit eine Procedure MyLokImageMouseMove
also
LokImage.OnMouseMove := MyLokImageMouseMove

und in MyLokImageMouseMove
dann Parent.MouseMove;

aber dann fehlen mir die parameter von mousemove. (Shift: TShiftState; X, Y: Integer)

Ich hoffe ihr könnt mir weiter helfen.


Johnny
Info : Ich programiere gerade ein Program um Modelleisenbahnen digital zu steuern.
http://schiffmodellbau.sc.funpic.de/info/software.html[delphi]

Delphi-Narr 20. Okt 2009 14:17

Re: Panel und MouseMove
 
Kenne mich mit Win32 nicht aus, aber du müsstest die PanelPosition auf die Panelposition+X bzw.Y Wert der Maus auf dem Image setzen. Klappt bei mir auch ganz gut, hatte das Problem, das ich ein Shape verschieben will, wenn ich auf dem Shape und wenn ich auf dem Formular bin:


Delphi-Quellcode:
procedure TForm1.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
     Shape1.Left:=Shape1.Left+X;
     Shape1.Top:=Shape1.Top+X;
end;
Bei mir hats geklappt, musst du halt noch umformen...

js747a 20. Okt 2009 14:19

Re: Panel und MouseMove
 
Werde es nachher mal ausprobieren.
Danke erstmal

Delphi-Narr 20. Okt 2009 14:22

Re: Panel und MouseMove
 
Zitat:

Zitat von js747a
Habe es versucht mit eine Procedure MyLokImageMouseMove
also
LokImage.OnMouseMove := MyLokImageMouseMove

und in MyLokImageMouseMove
dann Parent.MouseMove;

aber dann fehlen mir die parameter von mousemove. (Shift: TShiftState; X, Y: Integer)
Ich hoffe ihr könnt mir weiter helfen.


Johnny
Info : Ich programiere gerade ein Program um Modelleisenbahnen digital zu steuern.
http://schiffmodellbau.sc.funpic.de/info/software.html[delphi]



Dann gib die doch einfach weiter...

MyLokImageMouseMove(X und Y Wert...)


Edit:


Keine Ahnung, ob es das gibt:

Du kannst DragMode auf dmAutomatic stellen und DragKind auf dkDock. Sowohl beim Formular, als auch beim Image...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:12 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