![]() |
AW: OTA - komplexer Experte
Naja, ich habe da offenbar eine natürliche Priorisierung vorausgesetzt. :stupid:
Außer CodesiteLogging (free) habe ich bisher keine Erweiterungen installiert. Ich wüsste auch nicht, für welche Funktion Ctrl+Shift+O bereits verwendet sein sollte (vielleicht fängt das ja auch eine ganz andere Anwendung (z.B. SnagIt) ab)). Erst dachte ich, die ShortCuts würden für mein Menü gar nicht funktionieren, bis ich dann noch Ctrl+Shift+Alt+O probiert habe. Ich schaue mir das mal heute Abend noch genauer an... (Bin ja schon zufrieden, dass es grundsätzlich geht.) |
AW: OTA - komplexer Experte
Zitat:
![]() GExperts hat diese Funktion etwas anders implementiert auch. Beide sind allerdings dadurch eingeschränkt, dass die IDE keine zentrale Stelle hat, wo man diese Shortcuts abfragen oder gar konfigurieren kann. |
AW: OTA - komplexer Experte
Zitat:
|
AW: OTA - komplexer Experte
... aber noch besser eigentlich als Windows-Funktion.
Sonst weiß man ja auch nicht, ob sich ein anderes Programm da vor- oder reindrängelt... |
AW: OTA - komplexer Experte
Zitat:
|
AW: OTA - komplexer Experte
Liste der Anhänge anzeigen (Anzahl: 1)
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:
Die .pas, in der das dann realisiert wird, habe ich mal angehängt.
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; 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). |
AW: OTA - komplexer Experte
Vielleicht kannst du das Erstellen der Menuitems in eine Funktion auslagern, damit der Quellcode besser lesbar ist.
Delphi-Quellcode:
Auch das onclick könnte man noch als Parameter übergeben.
function TuoMethodes.UnitOptimizer_CreateMenuItem(Name: String; Capton: string);
var mi: TMenuItem; begin mi := TMenuItem.Create(nil); mi.Name := Name; mi.Caption := Capton; Result := mi; end; procedure TuoMenues.Initialize; begin if Supports(BorlandIDEServices, INTAServices, NTAServices) then begin StahliSoftMenuItem := UnitOptimizer_CreateMenuItem('StahliSoftMenuItem', 'StahliSoft'); NTAServices.AddActionMenu('ToolsMenu', nil, StahliSoftMenuItem, False, True); StahliSoftMenuItem := UnitOptimizer_CreateMenuItem('StahliSoftUnitOptimizerMenuItem', 'UnitOptimizer'); NTAServices.AddActionMenu('StahliSoftMenuItem', nil, UnitOptimizerMenuItem, True, True); //... usw end; |
AW: OTA - komplexer Experte
Ja, Danke.
Stimmt. Kann ich noch machen. |
AW: OTA - komplexer Experte
Zitat:
|
AW: OTA - komplexer Experte
Ohj, ja, klar. :oops:
TuoBindings wird ja als Interface benutzt. Hatte ich offenbar übersehen, weil ich selbst kein Interface und keine Interfacevariable deklariert habe.
Delphi-Quellcode:
Die anderen 2 Objekte werde ich dann entprechend noch freigeben.
TuoMethodes = class
... TuoBindings = class(TNotifierObject, IOTAKeyboardBinding) ... TuoMenues = class ... Das sollte ja dann ok gehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz