Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Count von TMenuItem ist Null wenn ausgeklappt (https://www.delphipraxis.net/215072-count-von-tmenuitem-ist-null-wenn-ausgeklappt.html)

shebang 3. Mai 2024 10:10

Count von TMenuItem ist Null wenn ausgeklappt
 
Ich verwende ein TMainMenu in welchem abhängig vom aktuellen Zustand der Anwendung bestimmte Untermenupunkte ausgegraut (disabled) werden. Der User klickt auf einen Hauptmenupunkt dieser wird ausgeklappt und die Untermenupunkte sind sichtbar, einige davon ausgegraut. Dabei belässt es der User, er klickt nicht auf einen der Untermenupunkte, sondern lässt das Menu ausgeklappt stehen.

Jetzt wird im Hintergrund ein Prozess fertig und schickt eine Message an die GUI, dass jetzt wieder alle Untermenupunkte enabled werden können. Interessanterweise ist aber zu diesem Zeitpunkt die Anzahl der Untermenupunkte des ausgeklappten TMenuItems Null, so dass ich nicht über die Untermenupunkte iterieren kann. Alle anderen (nicht ausgeklappten) TMenuItems haben den korrekt Wert im Count stehen.

Kennt jemand dieses Verhalten und hat vielleicht sogar schon eine Lösung dafür? Ich hab leider in den Methoden von TMainMenu und TMenuItem nichts gefunden, womit ich das Menu z.B. wieder einklappen könnte.

himitsu 3. Mai 2024 10:24

AW: Count von TMenuItem ist Null wenn ausgeklappt
 
Beim Popup gibt es Delphi-Referenz durchsuchenTPopup.CloseMenu,
aber hmmmm, beim MainMenü scheinbar nicht sowas,
egal, MSDN-Library durchsuchenEndMenu der Unit Winapi.Windows dürfte auch hier funktionieren.

shebang 3. Mai 2024 11:10

AW: Count von TMenuItem ist Null wenn ausgeklappt
 
EndMenu funktioniert, danke dir

himitsu 3. Mai 2024 11:21

AW: Count von TMenuItem ist Null wenn ausgeklappt
 
Soll das Menü garnicht erst angezeigt werden?

Delphi-Quellcode:
Abort;
im OnClick des jeweiligen Haupt-MenuItem sollte das auch bewirken. (so wie man Abort ebenfalls im OnPopup des TPopupMenu öfters nutzt)

shebang 3. Mai 2024 12:07

AW: Count von TMenuItem ist Null wenn ausgeklappt
 
Zitat:

Zitat von himitsu (Beitrag 1536344)
Soll das Menü garnicht erst angezeigt werden?

Doch, der User soll jederzeit das Menu öffnen können. Ich selbst wäre nur nie auf die Idee gekommen, das Menu ausgeklappt zu lassen, wenn das was ich anklicken wollte gerade ausgegraut ist. Daher ist der Fehler auch erst nach fast 7 Jahren aufgefallen.

Uwe Raabe 3. Mai 2024 12:15

AW: Count von TMenuItem ist Null wenn ausgeklappt
 
Vielleicht ist das ja in eurem Fall abwegig, aber ich verwende ja gerne Actions in den Menüs und da genügt es, das Enabled der Action zu ändern um auch im ausgeklappten Zustand aus einem ausgegrauten Menüeintrag einen nicht-ausgegrauten zu machen.

Man muss aber aktiv das Enabled ändern, denn das OnUpdate wird da nicht aufgerufen.

https://app.screencast.com/l5bZM0ERjaeFQ

himitsu 3. Mai 2024 12:24

AW: Count von TMenuItem ist Null wenn ausgeklappt
 
Warum nicht?

Warten, bis es wieder aktiv wird,
also offen lassen, damit man es schneller sieht :stupid:

Uwe Raabe 3. Mai 2024 13:15

AW: Count von TMenuItem ist Null wenn ausgeklappt
 
Zitat:

Zitat von himitsu (Beitrag 1536349)
Warum nicht?

Na ja, es wird schon aufgerufen, wenn es außer dem Untermenüeintrag noch mindestens ein anderes sichtbares Control oder einen Hauptmenü-Top-Item gibt, das auf die Action verlinkt (siehe TCustomForm.UpdateActions). Bei den Untermenüs wird das nur einmalig beim Popup aufgerufen.

Man könnte natürlich in einem Override dieser Methode selbst dafür sorgen.

himitsu 3. Mai 2024 13:17

AW: Count von TMenuItem ist Null wenn ausgeklappt
 
War auf die Idee bezogen.
Zitat:

wäre nur nie auf die Idee gekommen, das Menu ausgeklappt zu lassen, wenn das was ich anklicken wollte gerade ausgegraut ist


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz