AGB  ·  Datenschutz  ·  Impressum  







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

Count von TMenuItem ist Null wenn ausgeklappt

Ein Thema von shebang · begonnen am 3. Mai 2024 · letzter Beitrag vom 3. Mai 2024
Antwort Antwort
shebang

Registriert seit: 7. Feb 2020
124 Beiträge
 
Delphi 11 Alexandria
 
#1

Count von TMenuItem ist Null wenn ausgeklappt

  Alt 3. Mai 2024, 11:10
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#2

AW: Count von TMenuItem ist Null wenn ausgeklappt

  Alt 3. Mai 2024, 11:24
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
shebang

Registriert seit: 7. Feb 2020
124 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Count von TMenuItem ist Null wenn ausgeklappt

  Alt 3. Mai 2024, 12:10
EndMenu funktioniert, danke dir
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#4

AW: Count von TMenuItem ist Null wenn ausgeklappt

  Alt 3. Mai 2024, 12:21
Soll das Menü garnicht erst angezeigt werden?

Abort; im OnClick des jeweiligen Haupt-MenuItem sollte das auch bewirken. (so wie man Abort ebenfalls im OnPopup des TPopupMenu öfters nutzt)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
shebang

Registriert seit: 7. Feb 2020
124 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Count von TMenuItem ist Null wenn ausgeklappt

  Alt 3. Mai 2024, 13:07
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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Count von TMenuItem ist Null wenn ausgeklappt

  Alt 3. Mai 2024, 13:15
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
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#7

AW: Count von TMenuItem ist Null wenn ausgeklappt

  Alt 3. Mai 2024, 13:24
Warum nicht?

Warten, bis es wieder aktiv wird,
also offen lassen, damit man es schneller sieht
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Count von TMenuItem ist Null wenn ausgeklappt

  Alt 3. Mai 2024, 14:15
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#9

AW: Count von TMenuItem ist Null wenn ausgeklappt

  Alt 3. Mai 2024, 14:17
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 22:36 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