OpenDialog Initial Directory Problem



  • Jansen schrieb:

    Ich verstehe nicht wirklich, was dein Problem eigentlich ist.

    Das Problem besteht darin, daß ich durch eine Option (Schalter) zwischen zwei verschiedenen Verzeichnissen hin und her schalten möchte und nicht immer per Hand zwei vielleicht weit auseinanderliegende Verzeichnisse suchen muß. (kann sehr nervig sein) und ich dachte das mit InitialDir verwirklichen zu können. (ohne mehrere OpenDiologe auf die Form zu setzen.) Es muß doch irgendwie ne Möglichkeit geben OpenDialog zur Laufzeit anzuweisen in einem bestimmten Pfad zu öffnen und später dann auch zu wechseln.



  • Hallo

    Genau das macht doch InitialDir. Du must eben nach jedem Execute wie schon gezeigt den letzten Pfad auslesen und beim nächsten Open wieder InitialDir zuweisen. Wenn du dann zwei verschiedene methodenübergreifende Zwischenspeicher für je einen logischen OpenDialog nimmst, kannst du jeden logischen OpenDialog auch immer ein eigenes InitialDir zuweisen.

    bis bald
    akari



  • Ich weiß jetzt zwar nicht, ob wir aneinander vorbei reden, aber deshalb frage ich ja, da ich auch dachte InitialDir macht das. Es macht es aber nicht, auch nicht wenn ich vornweg mit SetCurrentDir(xxx) und InitialDir das Verzeichnis setze.



  • akari schrieb:

    Du must eben nach jedem Execute wie schon gezeigt den letzten Pfad auslesen und beim nächsten Open wieder InitialDir zuweisen.

    Wie schon gesagt, meinen Tests zufolge wird InitialDir im Programmverlauf nur ein einziges Mal ausgewertet, eben beim ersten Aufruf des Dialogs. Anschliessend kommt nur noch das CurrentDir zum Zug.

    Ich habe gerade noch mit TOpenDialog::Options::ofNoChange herumprobiert, aber das scheint keine Wirkung zu haben.

    Edit:
    Hmmm, SetCurrentDir wird tatsächlich auch ignoriert. Und der zuletzt gewählte Pfad bleibt auch über einen Neustart des Programmes erhalten, also wird der wohl automatisch irgendwo in der Registry abgelegt werden.



  • Lösung: die FileName-Property zurücksetzen, dann wird auch das neue gesetzte InitialDir ausgewertet.



  • Jansen schrieb:

    Lösung: die FileName-Property zurücksetzen, dann wird auch das neue gesetzte InitialDir ausgewertet.

    👍 ok danke, hab es jetzt zwar noch nicht probiert, aber ich gehe davon aus, daß es funktionier.



  • funktioniert!! 👍 wieder etwas gelernt 🙂
    danke nochmals



  • OldMan00 schrieb:

    wieder etwas gelernt 🙂

    Ich auch. 🙂



  • Hallo,

    Man muß doch nur InitialDir vor Execute setzen (und das jedesmal, wenn sich das Verzeichnis ändern soll) und dann geht's :

    OpenDialog1->InitialDir = "C:\\";
    if (OpenDialog1->Execute())
    {
    
    }
    

    Nash



  • Nash schrieb:

    [...] dann geht's

    Eben nicht. Wenn FileName einen Wert enthält, dann wird InitialDir ignoriert.



  • Hallo,

    Oops... Tatsache...
    Das kommt davon, wenn man mal so nebenbei antwortet.
    Da ich FileName meistens gesetzt hatte (auf die gewünschte Datei), ist mir das nicht aufgefallen.

    Nash


Anmelden zum Antworten