![]() |
OpenDirDialog
Liste der Anhänge anzeigen (Anzahl: 4)
Beschreibung
Für die Auswahl eines Verzeichnisses findet man viele ähnliche Quelltexte, welche ShBrowseForFolder und BrowseInfo verwenden. Dabei hatte ich unter Win2000 immer das Problem mit dem Einstellen der Größe, der Position und ob der Button "Neuer Ordner" angezeigt wird. Das bedeutet, der Button wurde nur angezeigt, wenn das Flag für die NewGUI gesetzt wurde, dann konnte jedoch die Größe nicht eingestellt werden. Die Positionierung habe ich gar nicht hinbekommen. Vermutlich werden die meisten die Komponente nicht benötigen. Mir geht es allerdings mehr darum, ein paar Verbesserungsvorschläge zu bekommen. Die Komponente erstellt ein TForm und setzt dessen Caption. Auf dem Formular befindet sich ein Verzeichnisbaum. Dieser wurde bis Build 9 in einem TShellTreeView dargestellt. Ab Build 10 wird der TPathExplorer (eine Erweiterung des ![]() Mit "F5" werden die Unerordner des markierten Ordners neu eingelesen. Bis Build 12 konnte man mit der Taste "Einf" den "Neuer Ordner"-Dialog auch ohne entsprechende Option aufrufen und mit "Entf" Ordner löschen. Der Dialog bietet weiterhin diese Optionen:
Hinweis Die aktuelle Version läuft unter Turbo Delphi. Da es nicht unicodefähig ist, werden in der Demo für bestimmte Komponenten die ![]() Demo In der Demo wird die Komponente dynamisch eingebunden. D.h. die Unit gfOpenDirDlg wurde zum Projekt hinzugefügt und in die uses eingetragen. In der Procedure, in welcher der Dialog benötigt wird, wird eine Variable vom Typ TOpenDirDialog deklariert, die Class erstellt und wieder freigegeben. Für Delphi ohne Unicode, wie dem von mir für die Demo verwendeten Turbo Delphi, werden Unicodekomponenten benötigt. Die Demo verwendet, da die TNT Controls nicht in Turbo Delphi Explorer installiert werden können, die oben bereits erwähnten TNT Hacks von Himitsu. Diese sind in der Demo nicht enthalten. Sie müssen noch hinzugefügt und in den Suchpfad des Projektes eingetragen werden (TntHack und TntHack\Sources). Eigenschaften ab Build 10
Delphi-Quellcode:
Eigenschaften bis Build 9
Caption : String;
Fontname : String; Title : WideString; Root : String; InitialDir : WideString; Path : WideString; Height : Integer; Left : Integer; Top : Integer; Width : Integer; Position : TPosition; Options : TOpenDirOptions;
Delphi-Quellcode:
InitialDir wird gesetzt und Path ist die Rückgabevariable.
Caption : String;
Title : String; Fontname : String; Root : String; InitialDir : String; Path : String; Height : Integer; Left : Integer; Top : Integer; Width : Integer; Position : TPosition; Options : TOpenDirOptions; Siehe ebenfalls Bild "odd.png" unten. Historie 05.10.2010 - Build 15
|
Re: OpenDirDialog
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,
Ich musste die Anweisungen zur Skalierung auskommentieren, ansonsten war es zu große Schrift ("Neuer Ordner" passte nicht mehr in den Button rein. (Ich habe bei mit 120 dpi eingestellt). Den zweiten Screenshot habe ich also mit folgender Änderung aufgenommen:
Delphi-Quellcode:
Klick mal z. B. auf die "Systemsteuerung", das was dann passiert ist wohl nicht so toll.
// if Screen.PixelsPerInch <> 96
// then OpenDirDlg.ScaleBy(Screen.PixelsPerInch, 96); Mfg FAlter |
Re: OpenDirDialog
Mir gefällts. Vor allem das Editfeld unter der Liste finde ich gut. Ich hasse Programme, wo man das nicht per Copy & Paste selber einfügen kann und immer 100 Klicks machen muss.
:thumb: edit: Wenn ich in der Demo Root auf was anderes außer rfDesktop setze, hängt sich das Programm auf. |
Re: OpenDirDialog
Zitat:
Zitat:
Musste jetzt auch feststellen, dass sich bei mir das Root nicht ändert. :gruebel: Ausserdem wird das Fehlen eines InitialDir nicht abgefangen. :| Habe oben die Dateien ausgetauscht. |
Re: OpenDirDialog
Zitat:
Vielen Dank für Eure Tests. :thumb: |
Re: OpenDirDialog
öhmmm... was mach ich falsch:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var odd : TOpenDirDialog; begin odd := TOpenDirDialog.Create(Self); odd.Caption := 'Ordner auswählen'; odd.Title := 'Einen Ordner auswählen:'; odd.Root := 'rfDesktop'; odd.InitialDir := 'D:\'; odd.Height := 365; odd.Left := 0; odd.Top := 0; odd.Width := 330; odd.Position := TPosition(4); odd.Options := [odCaption, odTitle, odEdit]; if odd.Execute then Edit1.Text := odd.Path; FreeAndNil(odd); end; Zitat:
|
Re: OpenDirDialog
Entschuldigung, bin gerade von Montage zurück.
Zitat:
|
Re: OpenDirDialog
Mit ShBrowseForFolder und BrowseInfo kann man doch genau das gleiche erreichen, wenn ich ich nicht irre. :gruebel:
|
Re: OpenDirDialog
Zitat:
@Garfield: Leider fehlt die Möglichkeit mit Enter und ESC den Dialog zu bestätigen bzw. abzubrechen. Es fehlen zudem die Mnemonics. Zudem wäre es wohl gleich am besten, den Dialog vom Benutzer in der größe verändern zu lassen. Gut finde ich, dass man bei neuen Ordner erstellen gleich auch mehrere Ordner erstellen kann (123\123\123). Leider gibt es keine Fehlermeldung, wenn der Ordner nicht erstellt wurde, oder der Ordnername ungültig ist (z.b. C:\windows, ???) Wenn ich bei Root "rfNetwork" einstelle, und dann einen Pfad anklicke, kommt das : --------------------------- Opendirdialog --------------------------- Fehler beim Festlegen des Pfades: "" --------------------------- OK --------------------------- so das wars erstmal :D Aber sonst echt gut. |
Re: OpenDirDialog
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08: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