![]() |
Initial Dir bei mehreren Dialogen
Hi, also ich habe 2 open Dialoge. Einen normalen und einen openpicture dialog. Beide haben unterschiedliche initialdirs welche jeweils unterordner vom Hauptprogramm sind. Angegeben habe ich diese zunächst im Objektinspektor mit '.\pfad'. Außerdem habe ich es probiert mit dem Code:
openpicturedialog1.InitialDir := ExtractFilePath(Application.Exename) + '\bilder\'; Mein Problem ist nun aber, wenn ich den einen Dialog öffne ist er im richtigen Verzeichnes, öffne ich den 2. Dialog ist er aber nicht im von mir festgelegten initialdir sondern im Verzeichnis in dem er beim 1. Dialog schon war. Was mach ich denn falsch? danke schonmal |
Re: Initial Dir bei mehreren Dialogen
Gibst Du bei beiden das InitialDir zur Laufzeit an?
|
Re: Initial Dir bei mehreren Dialogen
Zitat:
gleiches Problem ich auch immer und wuesste auch gerne warum das so ist! Speicher Windows das wo ab und nutzt dann fuer ein und das Selbe Programm/gleichen OpenDialog immer den zuletzt gewaehlten Folder? |
Re: Initial Dir bei mehreren Dialogen
Zitat:
|
Re: Initial Dir bei mehreren Dialogen
Das hier funktioniert bei mir:
Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
begin dlgOpen1.InitialDir := ExtractFilePath(ParamStr(0)); dlgOpen1.Execute; end; procedure TForm1.btn2Click(Sender: TObject); begin dlgOpenPic1.InitialDir := 'C:\Windows'; dlgOpenPic1.Execute; end; |
Re: Initial Dir bei mehreren Dialogen
@DeddyH:
Tut es auch wenn du beide innerhalb eines Buttons aufrufst hintereinander? |
Re: Initial Dir bei mehreren Dialogen
Meinst Du so?
Delphi-Quellcode:
Funktioniert.
procedure TForm1.btn1Click(Sender: TObject);
begin dlgOpen1.InitialDir := ExtractFilePath(ParamStr(0)); dlgOpen1.Execute; dlgOpenPic1.InitialDir := 'C:\Windows'; dlgOpenPic1.Execute; end; |
Re: Initial Dir bei mehreren Dialogen
Ok,
aber wenn du das ganze nicht per Code zuweist hast du im 2. OpenDialog den Pfad vom ersten drin. Nun schliesst du das Programm, oeffnest es wieder und dann hast du im ersten OD den Pfad vom 2. OD drin nachdem du den ja zuvor ausgewaehlt und bestaetigt hast! |
Re: Initial Dir bei mehreren Dialogen
Das weiß ich, deshalb meine Frage in meinem ersten Post.
|
Re: Initial Dir bei mehreren Dialogen
Zitat:
1) eine Erklaerung 2) eine Gegenloesung dass das nicht immer vorkommt? |
Re: Initial Dir bei mehreren Dialogen
1) Das scheint ein Verhalten von Windows zu sein, kann ich aber nicht belegen
2) Zur Laufzeit setzen, mehr fällt mir nicht ein |
Re: Initial Dir bei mehreren Dialogen
also damit klappt es immernoch nicht. ich habe 2 button für 2 dialoge und immernoch das problem von oben.
|
Re: Initial Dir bei mehreren Dialogen
ah alles klar klappt doch, das + '\bilder' war falsch da der \ so doppelt war, also nur + 'bilder'
vielen dank :-D |
Re: Initial Dir bei mehreren Dialogen
Tipp für' s nächste Mal:
Delphi-Quellcode:
So brauchst Du Dir keine Gedanken machen, ob da noch ein Backslash dranhängt, denn der ist immer da ;)
openpicturedialog1.InitialDir := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) + 'bilder';
|
Re: Initial Dir bei mehreren Dialogen
Das ist ein normales Verhalten von Windows:
siehe lpstrInitialDir http://msdn2.microsoft.com/en-us/library/ms646839(VS.85).aspx Wenn nichts angegeben ist, dann wird das aktuelle Verzeichis verwendet. jetzt das Problem/die Ursache: allerdings hat Windows da ein globales aktuelles Verzeichnis, welches für alle Programme gilt. tja und nun nimmt der Dialog nicht zuerst das aktuelle verzeichnis des Programmes, sondern das globale. und hier noch ein Problem: gesetzt wird allerdings auch das lokale aktuelle Verzeichnis:
Delphi-Quellcode:
also für alle die gern mit relativen Pfaden (relativ zum aktuellem Verzeichnis) arbeiten ... hier gibt's nette Nebenwirkungen :zwinker:
Memo1.Lines.Add(GetCurrentDir);
OpenDialog1.Execute; Memo1.Lines.Add(GetCurrentDir); Lösung(en): - .InitialDir setzen - und/oder ein Verzeichnis per .FileName mitgeben - und beim verwenden von relativen Pfaden aufpassen @DaddyH: ![]() ![]() |
Re: Initial Dir bei mehreren Dialogen
Zitat:
|
Re: Initial Dir bei mehreren Dialogen
Zitat:
Im Unterverzeichnis \* stehen alle Dateien und dann gibt es weitere Unterverzeichnisse für einzelne Dateierweiterungen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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