Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.034 Beiträge
 
Delphi 12 Athens
 
#4

AW: Halte PopupMenu nach Klick auf Item offen

  Alt 4. Jan 2024, 10:48
Das wird in der Tat schwierig. Ich hatte vor einiger Zeit mal eine ähnliche Anforderung, bei dem das Checked mehrerer Einträge direkt nacheinander geändert werden sollte. Wenn dabei das Menü bei jedem Click zu geht ist das schon lästig. Ich konnte aber keine Lösung auf Basis eines Standard Popupmenüs finden, da Windows da sehr tief involviert ist und es meines Wissens sowas nicht unterstützt.

Der wesentliche Teil spielt sich in der Windows-API TrackPopupMenu ab und in der entsprechenden Doku steht:
Zitat:
The window does not receive a WM_COMMAND message from the menu until the function returns.
Es ist aber aktuell so implementiert, dass das Click des MenuItems innerhalb dieser WM_COMMAND Message ausgeführt wird. Da ist das Menü aber schon geschlossen und TrackPopupMenu bereits beendet.

Man müsste also das komplette PopupMenu implementieren um das gewünschte Verhalten zu erreichen. Als Grundlage könnte hier die Implementierung von TPopupActionBar dienen. Das braucht aber auch noch ein gehöriges Mass an Anpassung und somit auch Verständnis dieser Implementierung.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat