Hallo QuoVadis,
am besten gehst Du wie folgt vor ...
Im Event OnContextPopup rufst Du die Methode Popup des Popup-Menüs auf, sie erwartet die Koordinaten an der das Menü dargestellt werden soll. Hier gibt es ein kleineres Problem, da die MousePos, die der Event liefert bezogen auf den Bildschirm-Ursprung sind, Die Position Deines Shapes aber relativ zum Ursprungspunkt des Forms ist (Top/Left)
Also mußt Du mittels "ClientToScreen" die Koordinaten umrechnen und die Left- und Top-Position Deines Shapes hinzu addieren ...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.Shape1ContextPopup (Sender: TObject; MousePos: TPoint; var Handled: Boolean); var ptMouse: TPoint; begin ptMouse := ClientToScreen(MousePos); inc(ptMouse.X,Shape1.Left); inc(ptMouse.Y,Shape1.Top); PopupMenu1.Popup(ptMouse.X,ptMouse.Y); Handled := true; end; |
Hoffe, ich konnte Dir helfen und Dein Problem ist hiermit gelöst...
Moderiert von
Tino: Überflüssige Absätze entfernt.