in meiner Version von Lazarus: 0.9.23 gibt es immer noch ein Problem mit den Menu ShortCut.... Sobald ich mehrer Panels, PageControls, und ein TSynEdit drauf habe gehen die nicht mehr....
Ich habe mir dafür eine kleine Unit ausgedacht, die das ganze umgeht.... ist zwar nicht besonders schön, aber es geht.
ich hänge mal die Unit einfach hier dran.... hoffe das ich damit jemand weiter Helfen kann.
Das Prinzip der Unit ist ganz einfach:
Beim Erstellen der Klasse muss ein From mit angeben werden wo das Mainmenu liegt.
(ich hätte das auch weglassen können und es mit MainFrom von Application machen können, nur so ist es irgendwie schöner finde ich).
in der Methode selbst sieht es so aus:
Code: Alles auswählen
constructor TMenuKey.Create(aForm: TForm);
begin
aForm.KeyPreview:=True;
BackupKeyDown:=aForm.OnKeyDown;
BackupKeyUp:=aForm.OnKeyUp;
aForm.OnKeyUp:=@KeyUp;
aForm.OnKeyDown:=@KeyDown;
fForm:=aForm;
end;
mit BackupKeyDown und BackupKeyUp löse ich später die entsprechenden Ereignisse aus.
Das heißt aber auch das sie Definiert werden müssen bevor die klasse Installisiert wird !
Code: Alles auswählen
MenuKey:=TMenuKey.Create(Form1);
natürlich sollte MenuKey Global Definiert werden, wobei es geht glaube ich auch Lockal aber das muss jeder selbst wissen. Viel Spaß damit.
Edit2: Neue Version hatte einige kleine Fehler in der KeyDown und KeyUp Methoden eingebaut... jetzt geht sie wieder.
Edit01: Den hinweise an Monta entfernt....