Hi *.*,
wir haben eine alte Delphi Anwendung, welche zuletzt mit Delphi 5 gepflegt wurde, auf Delphi 11 umgestellt. Diese arbeitet mit vielen nicht modalen Fenstern und ShortCuts. Jetzt zeigt sich folgendes Verhalten: drücke ich in einem Steuerelement in einem modalen Fenster z.B. Entf oder F2, so wird eine Aktion in einem anderen modalen Fenster ausgelöst, welche einen entsprechenden ShortCut zugwiesen hat.
Dieses Verhalten ist definitiv anders als noch in Delphi 5. Gibt es ggf. eine einfache Möglichkeit, das alte Verhalten wiederherzustellen?
Ich habe mir jetzt erstmal mittels TForm.OnActicate und TForm.OnDeactivate in Verbindung mit TActionList.State beholfen.
Gruß
Das ist schon ein mächtiger Sprung, D5 nach 11.1. Die
VCL in D5 nutzte für alle Forms das Application.Handle als
API owner, spätere Versionen dagegen das Application.Mainform, da es sonst Probleme mit dem Taskbar-Button der Anwendung gab (wird durch den Wert von Application.MainformOnTaskbar kontrolliert). Das hat Auswirkungen auf die relative Z-Order; alle sekundären Forms sind nun im Z-Order über dem Mainform und ansonsten auf der gleichen Ebene. Für modale Forms kann man mit PopupMode = pmAuto dafür sorgen, dass dieses Form über dem voher aktiven aufpoppt.
Was Du beschreibst (falls Du dich nich verformuliert hast) sollte eigentlich unmöglich sein; wenn ein modales Form aktiv ist sind alle anderen Forms disabled und verarbeiten keine Tastatureingaben. Es gibt zwar in der
VCL einen Mechanismus, der dem Mainform immer zuerst einen Shortcut präsentiert, aber der sollte nicht dazu führen, dass ein anderes
modales Form den Shortcut sieht, das sollte ja disabled sein...