Opdendialog FolderChange



  • hi
    wie könnte ich mit einer TOpenDialog komponente realisieren, dass der Start-Ordner nicht gewechselt werden kann.
    irgendwie muss man auf da ereigniss onFolderCange reagieren, ich weiss nur nicht wie, da keine Eigenschaft vorhanden ist um den Pfad einzustellen.



  • die Eigenschaft InitialDir gibt das Verzeichnis an, bei welchem der Opendialog geöffnet wird

    ausserdem solltest du dir mal die Eigenschaft Options ansehen, dort kann man u.a. ofNoChangeDir einstellen



  • ja du hast recht.
    nur bewirkt diese Option lediglich, dass man im selben Verzeichniss ist, in dem man den dialog geschlossen hat, wenn man ihn erneut aufruft.
    Ich möchte aber, dass es, während der dialog angezeigt wird, gar nicht erst möglich ist den Ordner zu wechseln



  • ja du hast recht.
    nur bewirkt diese Option lediglich, dass man im selben Verzeichniss ist, in dem man den dialog geschlossen hat, wenn man ihn erneut aufruft.
    Ich möchte aber, dass es, während der dialog angezeigt wird, gar nicht erst möglich ist den Ordner zu wechseln



  • Hallo

    das scheint mit TOpenDialog nicht möglich zu sein.
    Programmier dir so einen Dialog selber, du brauchst ja nur noch eine Liste der Dateien, wenn Verzeichnisse nicht berücksichtigt werden sollen.

    bis bald
    akari



  • stimmt eigentlich



  • irgendwo gibts immer ne Lösung 😉
    Quelle ist ein Delphiforum in Thailand, China oder anderen Ländern mit Schriftzeichen, die ich nicht verstehe 😃

    void __fastcall SetOpenDialogDirectory(TOpenDialog *Dlg, const String Path)
    {
    const unsigned int ID_FILENAME_WIN2K=1148;
    const unsigned int ID_FILENAME_98=1152;
    
    HWND hFileName;
    HWND hOK;
    
    if (Win32MajorVersion >= 5)
      {
      hFileName = GetDlgItem(GetParent(Dlg->Handle), ID_FILENAME_WIN2K);
      hFileName = FindWindowEx(hFileName,0,"ComboBox",NULL);
      hFileName = FindWindowEx(hFileName,0,"Edit",NULL);
      }
    else hFileName = GetDlgItem(GetParent(Dlg->Handle), ID_FILENAME_98);
    hOK = GetDlgItem(GetParent(Dlg->Handle), IDOK);
    String file = Dlg->FileName.LowerCase();
    if (file.Pos(LowerCase(Path)) < 1)
    	{
    	SetWindowText(hFileName, Path.c_str());
    	SendMessage(hOK, WM_LBUTTONDOWN, MK_LBUTTON, MAKEWORD(0, 0));
    	SendMessage(hOK, WM_LBUTTONUP, MK_LBUTTON, MAKEWORD(0, 0));
    	SetWindowText(hFileName, '\0');
      }
    }
    
    void __fastcall TForm1::OpenDialog1FolderChange(TObject *Sender)
    {
    SetOpenDialogDirectory(OpenDialog1,OpenDialog1->InitialDir);
    }
    


  • wow, danke
    du hast mir ne Menge Arbeit erspart

    PS: ich will ja nicht klugscheissern aber ich war mal in Thailand und es ist j´kein Problem die Schrift von Chinesischen Schriftzeichen zu unterscheiden. Sieht ein bisschen so aus wie Griechisch. 🙂


Anmelden zum Antworten