AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

OTA - komplexer Experte

Ein Thema von stahli · begonnen am 7. Jun 2020 · letzter Beitrag vom 29. Jun 2020
Antwort Antwort
Seite 2 von 4     12 34   
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
3.965 Beiträge
 
Delphi 10.3 Rio
 
#11

AW: OTA - komplexer Experte

  Alt 15. Jun 2020, 13:44
Naja, ich habe da offenbar eine natürliche Priorisierung vorausgesetzt.

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.)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
688 Beiträge
 
Delphi 2007 Professional
 
#12

AW: OTA - komplexer Experte

  Alt 15. Jun 2020, 14:01
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.
Es gibt von Nick Ring den DelphiShortcutFinder Experten, der einem die Shortcuts der IDE sowie der häufigsten IDE Plugins anzeigt.

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.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
7.619 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: OTA - komplexer Experte

  Alt 16. Jun 2020, 05:48
Beide sind allerdings dadurch eingeschränkt, dass die IDE keine zentrale Stelle hat, wo man diese Shortcuts abfragen oder gar konfigurieren kann.
Ja, das wäre eine wichtige Funktion...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
3.965 Beiträge
 
Delphi 10.3 Rio
 
#14

AW: OTA - komplexer Experte

  Alt 16. Jun 2020, 08:26
... aber noch besser eigentlich als Windows-Funktion.

Sonst weiß man ja auch nicht, ob sich ein anderes Programm da vor- oder reindrängelt...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
7.619 Beiträge
 
Delphi 10.3 Rio
 
#15

AW: OTA - komplexer Experte

  Alt 16. Jun 2020, 08:33
... aber noch besser eigentlich als Windows-Funktion.

Sonst weiß man ja auch nicht, ob sich ein anderes Programm da vor- oder reindrängelt...
Diese Shortcuts sind programmbezogene Shortcuts und keine systemweiten Hotkeys! Andere Programme sind da nicht involviert solange die Tastenkombination nicht global abgefangen wird.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
3.965 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: OTA - komplexer Experte

  Alt 17. Jun 2020, 07:57
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).
Angehängte Dateien
Dateityp: pas uoMenus.pas (4,5 KB, 3x aufgerufen)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
603 Beiträge
 
#17

AW: OTA - komplexer Experte

  Alt 17. Jun 2020, 09:47
Vielleicht kannst du das Erstellen der Menuitems in eine Funktion auslagern, damit der Quellcode besser lesbar ist.

Delphi-Quellcode:
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;
Auch das onclick könnte man noch als Parameter übergeben.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
3.965 Beiträge
 
Delphi 10.3 Rio
 
#18

AW: OTA - komplexer Experte

  Alt 17. Jun 2020, 10:08
Ja, Danke.
Stimmt. Kann ich noch machen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
688 Beiträge
 
Delphi 2007 Professional
 
#19

AW: OTA - komplexer Experte

  Alt 17. Jun 2020, 11:41
Lediglich die Freigabe der Objekte musste ich ausklammern, da dies sonst zu einer Zugriffsverletzung beim Schließen von Delphi führt.
Freigabe welcher Objekte? Wenn die irgendwelche Interfaces implementieren und in der IDE damit registriert werden, dürfen sie gar nicht freigegeben werden (zumindest nicht, bevor die Interfaces un-registriert wurden).
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
3.965 Beiträge
 
Delphi 10.3 Rio
 
#20

AW: OTA - komplexer Experte

  Alt 17. Jun 2020, 11:49
Ohj, ja, klar.

TuoBindings wird ja als Interface benutzt.
Hatte ich offenbar übersehen, weil ich selbst kein Interface und keine Interfacevariable deklariert habe.

Delphi-Quellcode:
  TuoMethodes = class
...
  TuoBindings = class(TNotifierObject, IOTAKeyboardBinding)
...
  TuoMenues = class
...
Die anderen 2 Objekte werde ich dann entprechend noch freigeben.
Das sollte ja dann ok gehen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf