![]() |
Delphi IDE, Explorer
Hi,
Gibt es eine Delphi Erweiterung (Expert), bei welcher man aus der IDE direkt den Ordner des aktuell geöffneten Verzeichnisses im Explorer anzeigen kann? |
Re: Delphi IDE, Explorer
Einen Experten der den Explorer ergänz kenn ich nicht, daher pack ich mir immer die beiden folgenden Einträge zu den Tools (Tools -> Tools konfigurieren -> Hinzufügen):
Titel: Verzeichnis Editordatei Program: Explorer.exe Parameter: $PATH($EDNAME) Titel: Projekt-Verzeichnis Program: Explorer.exe Parameter: $PATH($EXENAME) Halt längst nict so komfortabel wie deine Idee, aber zumindest komm ich damit etwas schneller ins gewünschte Verzeichnis. MfG, Tryer |
Re: Delphi IDE, Explorer
Hi,
Danke für deine Antwort! Sowas hat mir auch vorgeschwebt. Ist auch nicht schlecht, das Verzeichnis über "Tools" zu öffnen. Vielleicht gibt aber auch eine Möglichkeit, einen neuen Toolbutton in eine TDockToolBar der Delphi IDE hinzuzufügen. z.B neben das Öffnen Symbol (Toolbutton) |
Re: Delphi IDE, Explorer
Ich hab mich mal daran gesetzt einen Wizard zu schreiben über den man auch Toolbuttons einfügen kann.. leider bisher nicht sonderlich erfolgreich.
Auf Basis von INTAServices greife ich auf die ActionList der IDE zu und füge eine neue TAction hinzu, soweit scheinbar kein Problem. Nach dem Installieren des Package kann ich dann wie gewünscht über Rechtsklick auf die Cool-/Toolbar -> Anpassen unter den Anweisungen meine neue Aktion auswählen und einfügen, der damit erzeugte Toolbutton funktioniert dann einwandfrei..bis man Delphi beendet und neu startet. Der Toolbutton taucht dann zwar wieder auf, allerdings ohne Bitmap und ohne Funktion. Demnach fehlt also der ActionLink zu der Aktion, was entweder dadurch hervorgerufen werden kann das die Aktion garnicht gespeichert wurde und beim Erzeugen des Buttons noch nicht existiert (d.h. das mein Wizard erst nach dem laden der Toolbar erzeugt wird), oder das die Toolbar zwar den Button, aber nicht dessen AktionLink abspeichert. :gruebel: Vielleicht mache ich ja etwas grundlegend falsch beim dynamischen Erstellen der Aktion, wodurch die beteiligeten Komponenten dann nicht in der Lage sind die Veränderung korrekt abzuspeichern. Da ich bisher nichts mit TActions zu tun hatte fehlt mir die Erfahrung. Hier mal das Prinzip wie ich vorgehe:
Delphi-Quellcode:
Eigentlich recht simpel: Ich erzeuge die TAction, ermittle die ActionList der IDE, weise diese der Action zu und übergebe die Verantwortug für die Freigabe der Action ebenfalls an die ActionList.
type
TDSActionWizard = class(TNotifierObject, IOTAWizard) private FAction: TAction; (..) end; implementation constructor TDSActionWizard.Create; var Service: INTAServices; begin inherited Create; FAction := TAction.Create(nil); // Zuweisen diverser Eigenschaften über abstrakte, d.h. zu überschreibende Funktionen FAction.Caption := GetCaption; FAction.Category := GetCategory; FAction.Hint := GetHint; // Zuweisung des Events, ActionExecute führt die abstrakte Methode 'Execute' aus. FAction.OnExecute := ActionExecute; (.. Bitmap aus Resource laden etc ..) if Supports(BorlandIDEServices, INTAServices, Service) then begin FAction.ActionList := Service.ActionList; Service.ActionList.InsertComponent(FAction); end; end; Ein Beispiel für die Anwendung sieht dann so aus:
Delphi-Quellcode:
Vielleicht eine Idee in welchem Ansatz hier der Denkfehler sitzt ?
type
TExplorePathWizard = class(TDSActionWizard) protected function GetPath: string; virtual; abstract; public function GetCategory: string; override; procedure Execute; override; end; TExploreEditorFileWizard = class(TExplorePathWizard) protected function GetPath: string; override; public function GetCaption: string; override; end; implementation { TExplorePathWizard } procedure TExplorePathWizard.Execute; begin ShellExecute(0, 'open', PChar(GetPath), nil, nil, SW_SHOWDEFAULT); end; function TExplorePathWizard.GetCategory: string; begin Result := 'Verzeichnisse'; end; { TExploreEditorFileWizard } function TExploreEditorFileWizard.GetCaption: string; begin Result := 'Verzeichnis der Editordatei'; end; function TExploreEditorFileWizard.GetPath: string; var Service: IOTAModuleServices; begin Result := ''; if Supports(BorlandIDEServices, IOTAModuleServices, Service) then if Assigned(Service.CurrentModule) then Result := '"' + ExtractFilePath(Service.CurrentModule.FileName) + '"'; end; MfG, Tryer |
Re: Delphi IDE, Explorer
:wall: Fehler gefunden..
Das Streaming-System hat halt Probleme eine Action zuzuweisen die keinen Namen hat.. :oops: Ich räum das morgen nochmal auf und stell den Source dann hier rein. MfG, Tryer |
Re: Delphi IDE, Explorer
Hi Tryer,
Konntest du den Experten schon fertig stellen? |
Re: Delphi IDE, Explorer
Ich bin dabei.. hab noch einige Probleme mit den TActions aber das bekomm ich irgendwie in den Griff.
Derzeit knabber ich daran festzustellen wann in der IDE ein neuer ToolButton erstellt wird, ich muss also irgendwie über den ActionLink an die Instanz dessen Clients kommen. Wie es aussieht sind aber alle relevanten Methoden dafür nur statisch implementiert was die Möglichkeiten stark einschränkt :cry: Nun gibts erstmal ne neue Kanne Kaffe, und dann schau ich mal weiter. MfG, Tryer |
Re: Delphi IDE, Explorer
Hi,
wenn ich richtig verstanden habe was du willst, Code Rush kann das. Code Rusch wird jetzt von developer Express weiterentwickelt und vertrieben. Grüsse Woki |
Re: Delphi IDE, Explorer
Zitat:
Aber ich brauche eben nur diese eine Funktion und nicht gleich ein ganzes Bündel. Zudem kostet Code Rusch was. |
Re: Delphi IDE, Explorer
Liste der Anhänge anzeigen (Anzahl: 1)
So ich hab mal eine abgespeckte Version fertiggestellt, einfach in ein neues (Entwurfszeit-)Package einbinden und installieren.
Derzeit arbeite ich noch an einigen Features:
MfG, Tryer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 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