Beim Gedrückthalten der Maus auf einen Button öffnet sich ein Popupmenu neben dem Button.
Nun soll der Benutzer meim Loslassen der Maus die Procedure auslösen, die dem entsprechendem MenuItem zugewiesen ist.
Ein kurzes Beispiel zeigt, dass das (zumindest in 11.3.1) ohne weiteres Zutun funktioniert. Dazu habe ich im OnMouseDown-Event des Controls folgenden Code:
Delphi-Quellcode:
if (Button = TMouseButton.mbRight) and (Shift = [ssRight]) then begin
var P := (Sender as TControl).ClientToScreen(TPoint.Create(X, Y));
PopupMenu1.Popup(P.X, P.Y);
end;
Beim Loslassen der rechten Maustaste wird dann der OnClick-Event ausgeführt.
Das funktioniert aber nur mit der rechten Maustaste, weil es für das PopupMenu ein WM_MENURBUTTONUP aber kein WM_MENULBUTTONUP gibt.