Tastatur-Shortcuts: identisch für zwei Fenster

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Tastatur-Shortcuts: identisch für zwei Fenster

Beitrag von Aliobaba »

Hallo,

ich habe eine Anwendung, die aus zwei Fenstern (Formularen) besteht. Nun möchte ich das gesamte Programm per Tastatur-Shortcuts steuerbar machen.
Mittels " Key-Preview := true " werden alle Tastaturereignisse eines Fensters auch sehr schön abgefangen, aber nur immer jeweils für ein Fenster. Die Tastaturereignisse sollen aber für beide Fenster völlig identisch gelten.

Ich habe mir damit geholfen, dass ich die Procedure

Code: Alles auswählen

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState   );
begin        
   ......  hier kommen die Tastatur-Shortcuts rein
end;
in identischer Form auch für das zweite Fenster geschrieben (kopiert) habe:

Code: Alles auswählen

procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState   );
begin        
   ......  hier kommen die genau gleichen Tastatur-Shortcuts rein
end;
Eine gemeinsame "ausgelagerte" Procedure funktioniert nicht, da dann diese Variable "Key" und "Shift" nicht erkannt wird als Tastaturdruck.

Code: Alles auswählen

 If  (ssCtrl in Shift) and (Key=Ord('S')) then   Form2.ErweiterteSuche_Oder;  
Das ständige "Identisch-Halten" der beiden "Key-Down" Tastaturereignisproceduren ist "anstrengend".
Wie könnte ich das alles vereinfachen?

Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Tastatur-Shortcuts: identisch für zwei Fenster

Beitrag von MmVisual »

Code: Alles auswählen

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState   );
begin        
   ......  hier kommen die Tastatur-Shortcuts rein
end;
 
procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState   );
begin        
   Form1.FormKeyDown(Sender, Key, Shift);
end;
EleLa - Elektronik Lagerverwaltung - www.elela.de

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Tastatur-Shortcuts: identisch für zwei Fenster

Beitrag von Aliobaba »

Hallo MmVisual,

DANKE!! Klappt super! :D

Aliobaba
(Schön, wieder 'mal von Dir "gehört" zu haben!)
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Antworten