AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Halte PopupMenu nach Klick auf Item offen

Ein Thema von DieDolly · begonnen am 4. Jan 2024 · letzter Beitrag vom 4. Jan 2024
 
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:35 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