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 Shotcuts von TActions in MDI Apllications (https://www.delphipraxis.net/84335-shotcuts-von-tactions-mdi-apllications.html)

OlloSoft 15. Jan 2007 15:52


Shotcuts von TActions in MDI Apllications
 
Hi,
eigentlich ist dies ein Beitrag für die QC von Borland, doch vielleicht hat ja einer von Euch schon ein Bugfix geschrieben:

Ausgangspunkt:
Eine MDI Anwendung bestehend aus mindestens 2 unterschiedlichen Childformularen und (natürlich) einem MDI-Parent.
In Child 1 ist in einer TActionList 1 TAction mit einem beliebigen ShortCut - z. B. STRG+UMSCH+V
In Child 2 ist in einer TActionList 1 TAction mit einem beliebigen, jedoch von dem in Child 1 unterschiedlichen ShortCut - z. B. SHIFT+ENTF

Öffne ich nun in der mit Delphi 7 kompilierten Anwendung beide Child Fenster, wird, wenn ich die Tastenkombination STRG+UMSCH+V betätige, die entspr. Action ausgelöst, WENN Child 1 das AKTIVE Child Fenster ist. Die Tastenkobination SHIFT+ENTF bleibt ohne Resonanz.

So soll es sein, das ist gut so.

Kompiliere ich nun den selben Sourcecode mit Delphi 10 und starte die Anwendung wie oben beschrieben, wird SHIFT+ENTF auch dann ausgelöst, wenn Child 2 NICHT das AKTIVE Fenster ist. Ebenso verhält es sich mit STRG+UMSCH+V, wenn Child 1 nicht das aktive Fenster ist.

Nun meine Frage, hat jemand von Euch gleiche Erfahrungen gemacht? Wer hat eine Lösung?

OlloSoft 14. Aug 2008 14:46

Re: Shotcuts von TActions in MDI Apllications
 
Manche Fragen muss man sich selber beantworten.

Für alle Anwender, die meine Sorgen teilen, hier nun eine Lösung des Problems - schade nur, dass niemand aus dem Hause Borland, Code Gear, oder wer auch immer demnächst eine IDE namens Delphi herstellen mag, sich des Bugs angenommen haben.

Ich habe in einem Basisformular meiner Anwendung die Funktion "IsShortCut()" überschrieben...

Delphi-Quellcode:
function TosCustomForm.IsShortCut(var Message: TWMKey): Boolean;
begin
  Result := Self.Enabled              and
            (Screen.ActiveForm = Self) and
            inherited IsShortCut(Message);
end;
... seit dem läuft alles so, wie ich es mir wünsche.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:09 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