![]() |
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 |
Re: Objekt an Mausposition binden
ueber den paint-event der Form könnte man die mousepos übergeben z.B.
|
Re: Objekt an Mausposition binden
dann würde das shape aber der maus nicht folgen
|
Re: Objekt an Mausposition binden
klar würde er das machen ;)
|
Re: Objekt an Mausposition binden
habs eben ausprobiert... Er machts nicht... :wall:
|
Re: Objekt an Mausposition binden
Zitat:
|
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; |
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? |
Re: Objekt an Mausposition binden
schei.. stimmt... sorry bin etwas eingerostet... :wall:
|
Re: Objekt an Mausposition binden
Code:
Ist nicht so elegant, aber das müsste für dich reichen ;)
timer, intervall: 10
OnTimer: Shape1.Left := ScreenToClient( Mouse.CursorPos ).X - Shape1.Width div 2; Shape1.Top := ScreenToClient( Mouse.CursorPos ).Y - Shape1.Height div 2; |
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; |
Re: Objekt an Mausposition binden
so wird das Objekt nur bewegt, wenn die maus gedrückt ist !
MfG |
Re: Objekt an Mausposition binden
Zitat:
|
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:
|
Re: Objekt an Mausposition binden
ok... alle klarheiten wurden beseitig :lol:
|
Re: Objekt an Mausposition binden
Zitat:
|
Re: Objekt an Mausposition binden
Alles klar, Problem gelöst, gute nacht!
|
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