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 Objekt an Mausposition binden (https://www.delphipraxis.net/119416-objekt-mausposition-binden.html)

grebaldi 26. Aug 2008 00:45


Objekt an Mausposition binden
 
Guten Morgen, Gemeinde!

Mein Problem sieht folgendermaßen aus:

Ich möchte ein TShape mit dem OnStartDrag-Ereignis eines Labels erzeugen und dafür sorgen, dass dieses Shape der Maus folgt. Mit dem OnEndDrag-Ereignis des Labels soll das Shape dann wieder verschwinden.

Ich bin leider völlig ratlos, obwohl es ja ziehmlich simpel klingt...

Hoffentlich wisst ihr alle mehr als ich...

Beste Grüße,
grebaldi

Sidewinder 26. Aug 2008 01:14

Re: Objekt an Mausposition binden
 
ueber den paint-event der Form könnte man die mousepos übergeben z.B.

grebaldi 26. Aug 2008 01:37

Re: Objekt an Mausposition binden
 
dann würde das shape aber der maus nicht folgen

mr_emre_d 26. Aug 2008 01:39

Re: Objekt an Mausposition binden
 
klar würde er das machen ;)

grebaldi 26. Aug 2008 01:45

Re: Objekt an Mausposition binden
 
habs eben ausprobiert... Er machts nicht... :wall:

Sidewinder 26. Aug 2008 01:45

Re: Objekt an Mausposition binden
 
Zitat:

klar würde er das machen
Hmmmm.. jein... man müste die Form immer wieder neu zeichnen... nicht gut....

Sidewinder 26. Aug 2008 01:49

Re: Objekt an Mausposition binden
 
- setz ne globale var durch den labeldragevent
- Form.onmousemove... übergeb damit die cursorpos...
uuppsss vergessen.. sample:

Delphi-Quellcode:
var blub : boolean;

Procedure tform1.onmousemove();
begin
  if (Shape <> nil) and blub then
  begin
    {poswerte übergeben}
  end;
end;

grebaldi 26. Aug 2008 01:58

Re: Objekt an Mausposition binden
 
Jo, die Idee hatte ich auch gerade, aber da gibt es ein geringfügiges Problem.
Wenn sich die Maus nun innerhalb der Listbox oder irgendeinem beliebigen Element auf dem Formular befindet, bewegt sich das Shape nicht mehr mit.
Rein Theoretisch müsste ich die Routine in alle vorhandenen OnMouseOver-Events einbinden, damit das einwandfrei funktioniert - aber gibt es da nicht vielleicht eine elegantere Lösung?

Sidewinder 26. Aug 2008 02:02

Re: Objekt an Mausposition binden
 
schei.. stimmt... sorry bin etwas eingerostet... :wall:

mr_emre_d 26. Aug 2008 02:15

Re: Objekt an Mausposition binden
 
Code:
timer, intervall: 10

OnTimer:
  Shape1.Left := ScreenToClient( Mouse.CursorPos ).X - Shape1.Width div 2;
  Shape1.Top := ScreenToClient( Mouse.CursorPos ).Y - Shape1.Height div 2;
Ist nicht so elegant, aber das müsste für dich reichen ;)

Sidewinder 26. Aug 2008 02:18

Re: Objekt an Mausposition binden
 
wie ist es damit.....
Delphi-Quellcode:
var
dragged : boolean;

procedure TForm1.FormCreate(Sender: TObject);
begin
  application.OnMessage := MSGevent;
end;

Procedure Tform1.MSGevent(var Msg: tagMSG; var Handled: Boolean);
var mousepos : Tpoint;
begin
  if (Msg.message = WM_LBUTTONDOWN) then
  begin
    dragged := true;
  end;
  if (Msg.message = WM_LBUTTONUP) then
  begin
    dragged := false;
  end;
  if dragged then
  begin
    mousepos := form1.ScreenToClient(mouse.CursorPos);
    Shape1.Left := mousepos.X - (Shape1.Width div 2);
    Shape1.Top := mousepos.Y - (Shape1.Height div 2);
  end;
end;

mr_emre_d 26. Aug 2008 02:22

Re: Objekt an Mausposition binden
 
so wird das Objekt nur bewegt, wenn die maus gedrückt ist !

MfG

Sidewinder 26. Aug 2008 02:25

Re: Objekt an Mausposition binden
 
Zitat:

Ich möchte ein TShape mit dem OnStartDrag-Ereignis eines Labels erzeugen und dafür sorgen, dass dieses Shape der Maus folgt. Mit dem OnEndDrag-Ereignis des Labels soll das Shape dann wieder verschwinden.
ich hatte es so verstanden das er es so haben will :gruebel:

grebaldi 26. Aug 2008 02:26

Re: Objekt an Mausposition binden
 
ich komme übrigens mit dem posten nicht mehr hinterher. Zweimal wollte ich mich jetzt schon bedanken und einmal sagen, dass das ja richtig ist mit der gedrückten maus :cheers:

Sidewinder 26. Aug 2008 02:28

Re: Objekt an Mausposition binden
 
ok... alle klarheiten wurden beseitig :lol:

mr_emre_d 26. Aug 2008 02:28

Re: Objekt an Mausposition binden
 
Zitat:

Zitat von Sidewinder
Zitat:

Ich möchte ein TShape mit dem OnStartDrag-Ereignis eines Labels erzeugen und dafür sorgen, dass dieses Shape der Maus folgt. Mit dem OnEndDrag-Ereignis des Labels soll das Shape dann wieder verschwinden.
ich hatte es so verstanden das er es so haben will :gruebel:

Ohh ... Ich habe nicht genau geschaut :) Ist ja auch schon so spät :tongue:

grebaldi 26. Aug 2008 02:32

Re: Objekt an Mausposition binden
 
Alles klar, Problem gelöst, gute nacht!

Sidewinder 26. Aug 2008 02:33

Re: Objekt an Mausposition binden
 
dann ist es ja gut... viel spass noch beim "coden"
cu


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:53 Uhr.

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