AGB  ·  Datenschutz  ·  Impressum  







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

Menü Shortcuts aktiv, obwohl Form unsichbar

Ein Thema von Shark99 · begonnen am 8. Jan 2014 · letzter Beitrag vom 8. Jan 2014
Antwort Antwort
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#1

Menü Shortcuts aktiv, obwohl Form unsichbar

  Alt 8. Jan 2014, 20:18
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:
Application.MainForm.Visible := False;
if IsWindowVisible(Application.Handle) then
    ShowWindow(Application.Handle, SW_HIDE);
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?
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: Menü Shortcuts aktiv, obwohl Form unsichbar

  Alt 8. Jan 2014, 20:58
Wenn deine ShortCuts in einer TActionList festgelegt wurden, kannst du TActionListState auf asSuspended setzen:

Zitat:
The actions in the action list do not respond when client objects tell them to "fire". The Enabled property for all actions in the list is unchanged.
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#3

AW: Menü Shortcuts aktiv, obwohl Form unsichbar

  Alt 8. Jan 2014, 21:03
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.

Geändert von Shark99 ( 8. Jan 2014 um 21:05 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: Menü Shortcuts aktiv, obwohl Form unsichbar

  Alt 8. Jan 2014, 21:10
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?
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#5

AW: Menü Shortcuts aktiv, obwohl Form unsichbar

  Alt 8. Jan 2014, 21:13
Gab's denn bei Delphi 5 bereits eine TActionList?
Ja.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

AW: Menü Shortcuts aktiv, obwohl Form unsichbar

  Alt 8. Jan 2014, 21:17
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.
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#7

AW: Menü Shortcuts aktiv, obwohl Form unsichbar

  Alt 8. Jan 2014, 21:19
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.
  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 13:44 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