AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OTA - komplexer Experte

Ein Thema von stahli · begonnen am 7. Jun 2020 · letzter Beitrag vom 22. Jul 2020
Antwort Antwort
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#1

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
10.054 Beiträge
 
Delphi 12 Athens
 
#2

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
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#3

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
637 Beiträge
 
#4

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
4.358 Beiträge
 
Delphi 11 Alexandria
 
#5

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
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.733 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

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
4.358 Beiträge
 
Delphi 11 Alexandria
 
#7

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
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: OTA - komplexer Experte

  Alt 18. Jun 2020, 22:49
Ich will mich jetzt mal um einen Installer kümmern...

Eine eigene Lösung mit Eintrag in Registry, Lizenzdatei und optional UpdateCheck würde ich mir grundsätzlich zutrauen.

Wie steht es denn aber aktuell mit dem GetIt-Manager?
Lässt sich der für ein Projekt wie meins nutzen?
Muss Emba das genehmigen? Habe ich da überhaupt eine Chance? (Das Package müsste sich ja erst mal bewähren...)
Wie würde das mit "Lizenz kaufen" und überhaupt mit unterschiedlichen Lizenzen funktionieren?

(Einen älteren Beitrag dazu habe ich hier gefunden: https://www.delphipraxis.net/186196-...instellen.html. Leider nichts aktuelles.)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.756 Beiträge
 
Delphi 12 Athens
 
#9

AW: OTA - komplexer Experte

  Alt 19. Jun 2020, 00:20
Wie steht es denn aber aktuell mit dem GetIt-Manager?
Lässt sich der für ein Projekt wie meins nutzen?
Ich denke, schon - aber s.u.

Muss Emba das genehmigen? Habe ich da überhaupt eine Chance? (Das Package müsste sich ja erst mal bewähren...)
Die Hürde ist nicht so hoch.

Wie würde das mit "Lizenz kaufen" und überhaupt mit unterschiedlichen Lizenzen funktionieren?
Zur Zeit - gar nicht. Wenn du es nicht gratis weggeben willst, kannst du in GetIt nur eine Trial anbieten.

Du könntest das allerdings so gestalten, daß sich die Trial mit einem Lizenzkey freischalten lässt, den der Anwender bei dir über einen anderen Kanal erwerben muss. Dann kannst du GetIt immerhin als Softwareverteiler und -updater einsetzen. Allerdings erst, wenn die Update-Funktionalität auch endlich verfügbar ist. Das kann aber auch noch 10.5 oder später sein und erreicht dann auch nur die Leute mit dieser Version. Die GetIt-Kataloge sind bisher jedenfalls an die Delphi-Version gebunden.

Mir persönlich ist das zu starr, zu eingeschränkt und zu umständlich. Mein Release-Prozess beschränkt sich aktuell auf einen Klick im CI-System und das Anlegen der neuen Version auf der jeweiligen Download-Seite. Das erlaubt mir Updates im Viertelstundentakt zu liefern (zumindest theoretisch). Wenn ich genug Zeit und Lust auf PHP hätte, würde ich das ja auf den besagten Klick reduzieren, aber so ist es auch akzeptabel.

Solange mir GetIt keine vergleichbaren Turnaround-Zeiten bietet, gibt es den MMX und meine Tools auch weiterhin nur auf meiner Website. Aber die sind ja auch gratis.

Man sollte dabei auch bedenken, daß GetIt ausschließlich für den Hobbybereich oder als Teaser gedacht ist. Für den professionellen Einsatz ist das nicht zu gebrauchen (und das weiß Embarcadero auch). Es ist halt ein Marketinginstrument - nicht mehr und nicht weniger. Insofern vermutlich durchaus interessant für dich.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:21 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