MainMenu Problem mit ShortCut umgehen....

Zur Vorstellung von Komponenten und Units für Lazarus
Antworten
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

MainMenu Problem mit ShortCut umgehen....

Beitrag von pluto »

Hallo,
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....
Dateianhänge
umenukey.pas
Version:1.5
(2.69 KiB) 64-mal heruntergeladen
Zuletzt geändert von pluto am Fr 17. Aug 2007, 13:18, insgesamt 1-mal geändert.
MFG
Michael Springwald

Antworten