Ich habe jetzt nicht geprüft, wo der ShortCut ggf. priorisiert registriert wird, aber zumindest eine Lösung umgesetzt.
Zum Einen wird das Menü mit ShortCut erstellt und dann nochmal ein analoges KeyBinding für den selben ShortCut eingerichtet.
Im Wizard sieht das dann so aus:
Delphi-Quellcode:
procedure Register;
begin
RegisterPackageWizard(TOTAUnitOptimizerWizard.Create);
TQuickSearchForm.CreateDockForm;
TFullSearchForm.CreateDockForm;
uoMenues.Initialize; // <----
(BorlandIDEServices as IOTAKeyboardServices).AddKeyboardBinding(uoBindings); // <----
end;
function InitWizard(const BorlandIDEServices: IBorlandIDEServices; RegisterProc: TWizardRegisterProc;
var Terminate: TWizardTerminateProc): Boolean stdcall;
begin
RegisterProc(TOTAUnitOptimizerWizard.Create);
RegisterProc(TQuickSearchExpert.Create);
TQuickSearchForm.CreateDockForm;
RegisterProc(TFullSearchExpert.Create);
TFullSearchForm.CreateDockForm;
uoMenues.Initialize; // <----
(BorlandIDEServices as IOTAKeyboardServices).AddKeyboardBinding(uoBindings); // <----
Result := True;
end;
Die .pas, in der das dann realisiert wird, habe ich mal angehängt.
Das ist so ganz übersichtlich (finde ich) und funktioniert.
Lediglich die Freigabe der Objekte musste ich ausklammern, da dies sonst zu einer Zugriffsverletzung beim Schließen von Delphi führt.
Ich denke, damit kann ich leben. Falls jemand eine bessere Lösung kennen sollte, dann immer her damit.
Mit meinem Wizard bin ich dann soweit fertig, dass alles funktionelle grundsätzlich drin ist.
Fehlen jetzt noch ein Installer, Updater und natürlich die eigentliche logische Funktionalität (die hatte ich ja schon mal relativ fertig umgesetzt).