ShortCuts aus TActionList in anderern Forms verwenden
ShortCuts aus TActionList in anderern Forms verwenden
Ich hab mal wieder ein Brett vorm Kopf.
Im Hauptformular ist eine TActionList mit eigenen Funktionen - Zuweisung an TToolButtons.
Funktioniert prima auch mit den hinterlegten Shortcuts (zB. Strg+P)
Im aufgerufenen Unterformular sind TSpeedButtons vorhanden, denen die Action des Hauptformulares zugewiesen wurde.
Beschriftung und Grafik werden übernommen und bei Click auch die Action ausgeführt.
Die entsprechenden Shortcuts funktionieren allerdings nicht!
Ist auch nicht abhängig vom SpeedButton - BitButtons gehen auch nicht.
Hat jemand eine Lösung für das Problem oder muss ich in jeder Form die gleiche ActionList hinterlegen?
Danke
Im Hauptformular ist eine TActionList mit eigenen Funktionen - Zuweisung an TToolButtons.
Funktioniert prima auch mit den hinterlegten Shortcuts (zB. Strg+P)
Im aufgerufenen Unterformular sind TSpeedButtons vorhanden, denen die Action des Hauptformulares zugewiesen wurde.
Beschriftung und Grafik werden übernommen und bei Click auch die Action ausgeführt.
Die entsprechenden Shortcuts funktionieren allerdings nicht!
Ist auch nicht abhängig vom SpeedButton - BitButtons gehen auch nicht.
Hat jemand eine Lösung für das Problem oder muss ich in jeder Form die gleiche ActionList hinterlegen?
Danke
Jeder macht Fehler - viele Fehler brauchen EDV!
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: ShortCuts aus TActionList in anderern Forms verwenden
Du kannst mehrfach verwendete Aktionen auf einem Datenmodul hinterlegen.RuhrPotto hat geschrieben:Hat jemand eine Lösung für das Problem oder muss ich in jeder Form die gleiche ActionList hinterlegen?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: ShortCuts aus TActionList in anderern Forms verwenden
Danke für die Rückmeldung auf meine Frage!
Ich hab die ActionList aus dem Hauptformular in ein neues Datenmodul verlagert. In diesem ist nur die ActionList vorhanden.
Ich habe aber kein anderes Ergebnis! Bei Click auf die Buttons werden die Aktionen ausgeführt.
Die ShortCuts wie Strg+P funktionieren jetzt aber gar nicht mehr. Weder im Hauptformular noch in den Unterformularen.
Eingebuden und eingestellt ist folgendes am Beispiel eines SpeedButtons
Das Datenmodul hat folgende Eintrage:
Hab ich was übersehen / vergessen?
Ich hab die ActionList aus dem Hauptformular in ein neues Datenmodul verlagert. In diesem ist nur die ActionList vorhanden.
Ich habe aber kein anderes Ergebnis! Bei Click auf die Buttons werden die Aktionen ausgeführt.
Die ShortCuts wie Strg+P funktionieren jetzt aber gar nicht mehr. Weder im Hauptformular noch in den Unterformularen.
Eingebuden und eingestellt ist folgendes am Beispiel eines SpeedButtons
Code: Alles auswählen
implementation
uses FormMain, UnitDMAction;
...
SpeedButtonPause.Action := DMAction.ActionCallPauseScreen;
Code: Alles auswählen
object DMAction: TDMAction
OldCreateOrder = False
Height = 150
HorizontalOffset = 342
VerticalOffset = 256
Width = 150
object ActionList1: TActionList
Images = FrmMain.ImageList26
left = 32
top = 24
object ActionCallPauseScreen: TAction
Caption = 'Pause'
ImageIndex = 8
OnExecute = ActionCallPauseScreenExecute
ShortCut = 16464 // gleich Strg + P
end
end
end
procedure TDMAction.ActionCallPauseScreenExecute(Sender: TObject);
begin
FrmPause.ShowModal;
end;
Jeder macht Fehler - viele Fehler brauchen EDV!
Re: ShortCuts aus TActionList in anderern Forms verwenden
Ich hab das noch nie gemacht, daher eben ausprobiert (siehe beigefügte Demo): Also in dieser einfachen Demo geht es wunderbar.
- Dateianhänge
-
Action-HotKeys.zip
- (2.55 KiB) 54-mal heruntergeladen
Re: ShortCuts aus TActionList in anderern Forms verwenden
Hallo und Danke für die Demo!
Aber leider nur ein Teilerfolg - zumindest nähert man sich dem Problem:
In der Demo erfolgt der Call auf Form2 wie folgt:
Dabei funktioniert auch der zugehörige ShortCut - super!
In meinem Programm - und ich habs in der Demo mal kurz geändert - erfolgt der Call
Und schon klappt es nicht mehr mit dem ShortCut! Ziemlich madig ..
Es scheint also daran zu liegen, wie der Call auf das Formular erfolgt und nicht daran, wo die Actionlist hinterlegt ist!?
Aber leider nur ein Teilerfolg - zumindest nähert man sich dem Problem:
In der Demo erfolgt der Call auf Form2 wie folgt:
Code: Alles auswählen
Form2.Show;
In meinem Programm - und ich habs in der Demo mal kurz geändert - erfolgt der Call
Code: Alles auswählen
Form2.ShowModal;

Jeder macht Fehler - viele Fehler brauchen EDV!
Re: ShortCuts aus TActionList in anderern Forms verwenden
Ich denke, bei ShowModal gehen werden die Tastaturereignisse vom Hauptformular gleich ans modale Fenster weitergeleitet. Du musst versuchen, die Tastatur-Events abzufangen, bevor sie ans modale Fenster weitergeliefert wird. Aber ehrlich gesagt - das ist ziemlich widersinning, denn dann ist das Fenster ja nicht mehr modal. Warum kann dein Programm nicht mit "Form.Show" auskommen?
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: ShortCuts aus TActionList in anderern Forms verwenden
ShowModal hat einige Besonderheiten was die Nachrichtenverarbeitung (Maus, Tastatur etc.) anbelangt.RuhrPotto hat geschrieben:Und schon klappt es nicht mehr mit dem ShortCut! Ziemlich madig ..
Es scheint also daran zu liegen, wie der Call auf das Formular erfolgt und nicht daran, wo die Actionlist hinterlegt ist!?
Wenn du das Problem nicht lösen kannst, darfst du gernen einen Fehler melden: http://bugs.freepascal.org/
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein