Hauptmenü-Shortcuts (Alt+D für &Datei, Al+X für E&xtras) funktionieren nicht
Hauptmenü-Shortcuts (Alt+D für &Datei, Al+X für E&xtras) funktionieren nicht
Wenn ich ein leeres Formular habe, funktioneren die Shortcuts, Alt+D, etc. um die Hauptmenüs anzeigen zu lassen.
Sobald ich aber ein in einem Tabcontrol neue andere Formen einbette, funktionieren die genannten Shortcuts nicht mehr.
Woran kann das liegen und wie kann ich das beheben?
Sobald ich aber ein in einem Tabcontrol neue andere Formen einbette, funktionieren die genannten Shortcuts nicht mehr.
Woran kann das liegen und wie kann ich das beheben?
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Hauptmenü-Shortcuts (Alt+D für &Datei, Al+X für E&xtras) funktionieren nicht
Sind die ShortCuts nur durch das "&" in der Caption definiert oder explizit in der Property ShortCut?
Meinst du mit "andere Formen einbetten" Frames oder tatsächlich Formulare, die du erzeugst und einen TabSheet als Parent zuweist? In dem Fall kann es daran liegen, daß das Formular nicht aktiv ist.
Meinst du mit "andere Formen einbetten" Frames oder tatsächlich Formulare, die du erzeugst und einen TabSheet als Parent zuweist? In dem Fall kann es daran liegen, daß das Formular nicht aktiv ist.
Re: Hauptmenü-Shortcuts (Alt+D für &Datei, Al+X für E&xtras) funktionieren nicht
Ja, die "Shortcuts" sind nur durch das "&Datei" (also das &-Zeichen) definiert.
Solange ich noch keine andere Datei geladen habe, funktionieren die auch alle.
Wenn ich aber eine neue Form erzeuge (darin liegen die Synedits), und in das Pagecontrol einbinde (die einzelnen Seiten sind dann jeweils Parent der Form) dann funktionieren sie nicht mehr.
SynEdit hat auch keine eigenen Shortcuts, die z.B. Alt+D schlucken würden.
Hier mal verbildlicht, was ich meine :
Solange ich noch keine andere Datei geladen habe, funktionieren die auch alle.
Wenn ich aber eine neue Form erzeuge (darin liegen die Synedits), und in das Pagecontrol einbinde (die einzelnen Seiten sind dann jeweils Parent der Form) dann funktionieren sie nicht mehr.
SynEdit hat auch keine eigenen Shortcuts, die z.B. Alt+D schlucken würden.
Hier mal verbildlicht, was ich meine :
- Dateianhänge
-
- no.jpg (139.42 KiB) 3268 mal betrachtet
-
- yes.jpg (80.17 KiB) 3268 mal betrachtet
Zuletzt geändert von harrybonn am Sa 2. Mai 2020, 16:16, insgesamt 3-mal geändert.
Re: Hauptmenü-Shortcuts (Alt+D für &Datei, Al+X für E&xtras) funktionieren nicht
Hastasoft Pascal Editor? Wo gehen die Shortcuts nicht? In Lazarus? Oder in diesem (deinem?) Editor? In letzeren Fall: Liegen Konflikte mit mehrfach verwendeten Shortcuts vor? Wenn nicht, versuche ein kleines Beispielprogramm zu erstellen und das hochzuladen.
Re: Hauptmenü-Shortcuts (Alt+D für &Datei, Al+X für E&xtras) funktionieren nicht
Lazarus selber arbeitet da einwandfrei.
Ich habe mal weiter getestet, nur wenn Synedit den Fokus hat, funktioniert es nicht (dann ertönt nur ein beepton).
Im SynEdit selber kommt auch Alt+D an, wird aber nicht behandelt, daher der Beepton. M.E. müsste Synedit die &Datei-Shortcuts (die heißen irgendwie anders, komme nicht auf den Namen) ignorieren.
Aktiviere ich ein anderes Element im Hauptfenster, funktionieren die Menü-"Shortcuts."
Mehrfach verwendete Shortcuts ist nicht der Fall, habe ich überprüft (in allen Menüs habe ich nur Ctrl+X oder Shift+Ctrl+X oder Funktionstasten im Einsatz, nirgendwo shortcuts mit Alt+X). "X" steht hier für einen beliebigen Buchstaben.
Was ich aber gerade mit Erstaunen feststelle: Wenn ich nur die Alt taste drücke und wieder loslasse, dann wird das Hauptmenü aktiviert (wie bei F10) und dann kann man wie sonst üblich den gewünschten Buchstaben eintippen (z.B. "d") und das Dateimenü klappt auf.
So ginge es zur Not auch, aber schöner wäre natürlich, es ginge wie normalerweise erwartet....
Ich habe mal weiter getestet, nur wenn Synedit den Fokus hat, funktioniert es nicht (dann ertönt nur ein beepton).
Im SynEdit selber kommt auch Alt+D an, wird aber nicht behandelt, daher der Beepton. M.E. müsste Synedit die &Datei-Shortcuts (die heißen irgendwie anders, komme nicht auf den Namen) ignorieren.
Aktiviere ich ein anderes Element im Hauptfenster, funktionieren die Menü-"Shortcuts."
Mehrfach verwendete Shortcuts ist nicht der Fall, habe ich überprüft (in allen Menüs habe ich nur Ctrl+X oder Shift+Ctrl+X oder Funktionstasten im Einsatz, nirgendwo shortcuts mit Alt+X). "X" steht hier für einen beliebigen Buchstaben.
Was ich aber gerade mit Erstaunen feststelle: Wenn ich nur die Alt taste drücke und wieder loslasse, dann wird das Hauptmenü aktiviert (wie bei F10) und dann kann man wie sonst üblich den gewünschten Buchstaben eintippen (z.B. "d") und das Dateimenü klappt auf.
So ginge es zur Not auch, aber schöner wäre natürlich, es ginge wie normalerweise erwartet....
Re: Hauptmenü-Shortcuts (Alt+D für &Datei, Al+X für E&xtras) funktionieren nicht
Ich habe mir hier ein kleines Projekt zusammengeklickt, um den Fehler zu reproduzieren. Auf dem Formular ist ein Button mit Beschriftung '&Datei', d.h. er reagiert auf den Hotkey ALT+D und zeigt dann eine Meldungsbox ans. Wenn ich dich richtig verstehe, muss auf dem Formular ein SynEdit sein, das, wenn fokussiert, den Hotkey verschlucken soll. Allerdings kommt die Messagebox auch, wenn das SynEdit fokussiert ist und ALT+D gedrückt wird. Um auch den Fall zu haben, dass SynEdit nicht fokussiert ist, befindet sich auf dem Formular auch noch ein TEdit. Egal, was in dem Testprogramm fokussiert ist, ALT+D bewirkt immer die Anzeige der Messagebox.
Du kannst ja mal versuchen, das Programm so zu erweitern, dass dein Fehlerfall auftritt.
Du kannst ja mal versuchen, das Programm so zu erweitern, dass dein Fehlerfall auftritt.
- Dateianhänge
-
SynEdit_HotKey.zip
- (3.35 KiB) 118-mal heruntergeladen
Re: Hauptmenü-Shortcuts (Alt+D für &Datei, Al+X für E&xtras) funktionieren nicht
OK, danke habe ich gemacht.
Compiliere das Programm. Alt+D funktioniert (Hauptmenü geht auf).
Drücke auf Schalter "Create Synedit". Ein Formular mit Synedit wird erzeugt und in Tabsheet1 eingefügt.
Drücke erneut Alt+D: Funktioniert nicht mehr.
Compiliere das Programm. Alt+D funktioniert (Hauptmenü geht auf).
Drücke auf Schalter "Create Synedit". Ein Formular mit Synedit wird erzeugt und in Tabsheet1 eingefügt.
Drücke erneut Alt+D: Funktioniert nicht mehr.
- Dateianhänge
-
syntest.zip
- (5.7 KiB) 132-mal heruntergeladen
Re: Hauptmenü-Shortcuts (Alt+D für &Datei, Al+X für E&xtras) funktionieren nicht
Zur Info: Wenn ich alternativ keine Form für das SynEdit verwende, sondern ein TFrame, dann funktioniert das Hauptmenü!
Allerdings müsste ich dann einiges umstricken (bestimmte Events gibt es ja nicht beim TFrame), wenn es eine einfache andere Lösung gäbe, wäre das nice (z.B. kann ich ja Alt+D, etc, im SynEdit abfangen, wenn es eine Programmgesteuerte Lösung gäbe, daraufhin das Hauptmenü aufpoppen zu lassen, wäre es mir recht, habe da aber nichts gefunden).
Allerdings müsste ich dann einiges umstricken (bestimmte Events gibt es ja nicht beim TFrame), wenn es eine einfache andere Lösung gäbe, wäre das nice (z.B. kann ich ja Alt+D, etc, im SynEdit abfangen, wenn es eine Programmgesteuerte Lösung gäbe, daraufhin das Hauptmenü aufpoppen zu lassen, wäre es mir recht, habe da aber nichts gefunden).
Re: Hauptmenü-Shortcuts (Alt+D für &Datei, Al+X für E&xtras) funktionieren nicht
Ich habe dein Test-Programm etwas modifiziert:
(1) Ich füge in Form2 neben dem SynEdit1 ein TMemo ein. In Form1 ändere ich den ButtonClick-Code so ab, dass Memo1 den Fokus erhält, nicht mehr SynEdit1. --> Hot key funktioniert auch nicht.
(2) Waagemutig geworden, lösche gleich das fanze SynEdit1 aus dem Form2, so dass nur noch das Memo1 vorhanden ist, Ich lösche auch "synedit" aus der Uses-Zeile, so dass das Formular nichts mehr von SynEdit weiß --> weiterhin funktioniert der HotKey nicht.
(3) Ich füge im ButtonClick das SynEdit direkt ins TabSheet1 ein, nicht über den Parent Form2. --> Hotkey funktioniert.
Daraus schließe ich: Es ist kein Problem des SynEdit, sondern liegt daran, dass ein Formular eingefügt wird. Offenbar wird der Tastendruck von Form2 nicht an Form1 weitergeben.
Daraufhin habe ich das zip nochmals ausgepackt und die Dateien so umgeschrieben, dass sie von Delphi akzeptiert werden (und, da die Standard-Delphi-Konfiguration kein SynEdit enthätl, das TSynEdit durch ein TMemo ersetzt). In diesem Fall funkioniert der Hotkey (im Gegensatz zu Fall 1 bzw 2).
Daraus würde ich schließen, dass hier ein Fehler in der LCL-Ereignisbehandlung liegt. Möglicherweise rechnet ein Formular nicht damit, dass es als Child in ein weiteres Control eingebettet sein kann und reicht ein nicht behandeltes Ereignis nicht an den Parent weiter. Du solltest einen Bugreport einreichen und dabei das Testprogramm anfügen.
P.S.
Mit dem Frame bist du mir zuvor gekommen.
(1) Ich füge in Form2 neben dem SynEdit1 ein TMemo ein. In Form1 ändere ich den ButtonClick-Code so ab, dass Memo1 den Fokus erhält, nicht mehr SynEdit1. --> Hot key funktioniert auch nicht.
(2) Waagemutig geworden, lösche gleich das fanze SynEdit1 aus dem Form2, so dass nur noch das Memo1 vorhanden ist, Ich lösche auch "synedit" aus der Uses-Zeile, so dass das Formular nichts mehr von SynEdit weiß --> weiterhin funktioniert der HotKey nicht.
(3) Ich füge im ButtonClick das SynEdit direkt ins TabSheet1 ein, nicht über den Parent Form2. --> Hotkey funktioniert.
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
begin
with TMemo.Create(self) do
begin
Parent := Tabsheet1;
Align := alclient;
SetFocus;
end;
end;
Daraufhin habe ich das zip nochmals ausgepackt und die Dateien so umgeschrieben, dass sie von Delphi akzeptiert werden (und, da die Standard-Delphi-Konfiguration kein SynEdit enthätl, das TSynEdit durch ein TMemo ersetzt). In diesem Fall funkioniert der Hotkey (im Gegensatz zu Fall 1 bzw 2).
Daraus würde ich schließen, dass hier ein Fehler in der LCL-Ereignisbehandlung liegt. Möglicherweise rechnet ein Formular nicht damit, dass es als Child in ein weiteres Control eingebettet sein kann und reicht ein nicht behandeltes Ereignis nicht an den Parent weiter. Du solltest einen Bugreport einreichen und dabei das Testprogramm anfügen.
P.S.
Mit dem Frame bist du mir zuvor gekommen.
Re: Hauptmenü-Shortcuts (Alt+D für &Datei, Al+X für E&xtras) funktionieren nicht
Kann ich gerne machen.
Wo reiche ich das ein?
Wo reiche ich das ein?
Re: Hauptmenü-Shortcuts (Alt+D für &Datei, Al+X für E&xtras) funktionieren nicht
https://bugs.freepascal.org/view_all_bu ... oject_id=1; steht in der linken Randspalte des englischen Forums unter "bugtracker". Du musst dich anmelden und kannst dann unter "Report issue" den Sachverhalt beschreiben (auf Englisch).
Re: Hauptmenü-Shortcuts (Alt+D für &Datei, Al+X für E&xtras) funktionieren nicht
OK, hier ist der Report: https://bugs.freepascal.org/view.php?id=37007
Mein Problem konnte ich nun lösen, indem ich alle Controls in der bisherigen (externen) Form in ein extra Panel legte.
Wenn ich dann für die Form das TTabsheet als Parent setze, setze ich auch für das Panel das TTabsheet als Parent und sorge dafür, dass es über der Form liegt.
Dann funktioniert alles einwandfrei...
Mein Problem konnte ich nun lösen, indem ich alle Controls in der bisherigen (externen) Form in ein extra Panel legte.
Wenn ich dann für die Form das TTabsheet als Parent setze, setze ich auch für das Panel das TTabsheet als Parent und sorge dafür, dass es über der Form liegt.
Dann funktioniert alles einwandfrei...