![]() |
Menü Shortcuts aktiv, obwohl Form unsichbar
Ich bin dabei einen Bug zu fixen in einer alten Delphi 5 Anwendung (die auf Bugfixes nicht mehr weiterentwickelt wird).
Die Mainform wird in den Tray Icon versteckt:
Delphi-Quellcode:
Durch einen Doppel-Klick auf den Tray Icon wird eine Funktion ausgelöst bei der ein Child-Fenster erzeugt wird (eine Eingabemaske). Funktioniert so weit so gut, jedoch gibt es ein Problem. Alle Shortcuts des Mainmenus der Mainform sind weiterhin aktiv, obwohl die Form unsichtbar ist. Wenn es dort also z.B. einen Ctrl + T Shortcut gibt, kann ich diesen Shortcut nicht on OnKeyDown des Childfensters abfragen, weil automatisch der Shortcut der unsichtbaren Mainform aufgerufen wird. Wie kann ich das verhindern? Muss ich wirklich das Mainmenu beim Verstecken ausschalten?
Application.MainForm.Visible := False;
if IsWindowVisible(Application.Handle) then ShowWindow(Application.Handle, SW_HIDE); |
AW: Menü Shortcuts aktiv, obwohl Form unsichbar
Wenn deine ShortCuts in einer TActionList festgelegt wurden, kannst du
![]() Zitat:
|
AW: Menü Shortcuts aktiv, obwohl Form unsichbar
Es ist ja leider eine sehr alte Anwendung. Alle Shortcuts sind direkt in den TMenuItems drin. TMainMenu hat ja leider kein Enabled property. Ich müsste es also auf NIL setzen. Keine elegante Lösung.
|
AW: Menü Shortcuts aktiv, obwohl Form unsichbar
Dann mußt du wohl oder übel die Main-Items deaktivieren, bevor dein Hauptfenster unsichtbar wird, und beim Sichtbarwerden wieder aktivieren. Dabei mußt du nicht alle Menü-Items behandeln, sondern wie gesagt nur die Main-Items, die Überschriften also.
Gab's denn bei Delphi 5 bereits eine TActionList? |
AW: Menü Shortcuts aktiv, obwohl Form unsichbar
Zitat:
|
AW: Menü Shortcuts aktiv, obwohl Form unsichbar
Arbeit wirst du damit so oder so haben: Entweder alle Ereignisse aus den Menüs auf TActionList-Ereignisse umstellen, oder eben die Menü-Header deaktiveren (Enabled := False). Die zweite Lösung scheint mir zwar nicht ganz so sauber, ist aber wohl schneller erledigt und dürfte deinen Anforderungen genügen.
Ohne jetzt gehässig sein zu wollen – aber hier rächt sich die unsaubere Implementierung ohne TActionList. Die gibt es nämlich, um genau solche Probleme bewältigen zu können. Außer bei dahingerülzten Testprogrammen verwende ich sie immer ohne Ausnahme. |
AW: Menü Shortcuts aktiv, obwohl Form unsichbar
Ich setze nun im OnHide Menu auf nil und im Show Menu wieder auf die Komponente. Also nur zwei Zeilen Code und das Problem ist behoben. Trotzdem keine elegante Lösung. Ich dachte das Verstecken selbst ist vielleicht das Problem (also der Code von oben). Ich verstehe nicht wie ein Menü immer noch aktiv sein kann obwohl das Fenster unsichtbar ist und ein anderes den Fokus hat.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:10 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