Gibt es eine Möglichkeit ein PopupMenu offen zu halten, selbst nachdem auf ein TMenuItem geklickt wurde?
Ich erzeuge die TMenuItems selber und weise ein OnClick-Event zu. In diesem Event habe ich das hier mal ausprobiert.
Delphi-Quellcode:
...
handle click ...
Pos := TPopupMenu((Sender
as TMenuItem).GetParentMenu).PopupPoint;
TPopupMenu((Sender
as TMenuItem).GetParentMenu).PopUp(Pos.X, Pos.Y);
Nach einem Klick auf ein TMenuItem wird das PopupMenu geschlossen und danach sofort wieder geöffnet. Das sieht man leider und es flackert kurz.
Geht das auch anders, ohne dass das PopupMenu zu geht?
Für sowas ist ein popup Menu schlicht nicht vorgesehen und daher die falsche Wahl für so eine Anforderung. Dafür verwende lieber ein modales Form. Wenn es sich mehr wie ein popup menu verhalten soll (d. h. automatisch schließen wenn der Benutzer außerhalb klickt, die Caption des alten Forms aktiv lassen) ist etwas mehr Arbeit notwendig. Ich habe sowas mal für eine größere Anwendung implementiert, siehe Archiv in der Anlage. Leider hat der Kode zu viele Abhängigkeiten mit anderen Units meiner Kodebibliothek, daher kannst Du ihn nicht direkt verwenden. Aber vielleicht gibt er dir eine paar Anregungen...