IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Comment sélectionner un dossier via OpenDialog? [IDE]


Sujet :

C++Builder

  1. #1
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut Comment sélectionner un dossier via OpenDialog?
    Bonjour,
    Avec OpenDialog, il est possible de sélectionner un ou plusieurs fichiers.
    J'aimerais savoir comment sélectionner un dossier via OpenDialog.
    J'ai essayé simplement d'ouvrir un nom de dossier mais il affiche Fichier inexistant?
    Merci de votre aide.
    Xavier

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Points : 102
    Points
    102
    Par défaut
    Bonjour,

    Il n'existe pas d'objet TDirectoryDialog.
    Embarcadero propose un objet nommé TSelectDirectory, mais qui donne un aspect ancien à votre application.
    Essayez ce bout de code là :

    const SELDIRHELP = 1000;
    String Dir = "C:\\ ";
    if (SelectDirectory(Dir, TselectDirOpts() << sdAllowCreate << sdPerformCreate << sdPrompt, SELDIRHELP ))
    {…
    } ;


    Pour choisir un repertoire d'une façon moderne, vous n'avez pas d'autre choix que de faire appel directement à l'API de Windows de cette façon :

    HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE) ;
    if (SUCCEEDED(hr))
    {IfileOpenDialog *FenChoixRepertoire ;
    // Création de l’objet boite de dialogue.
    hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_ALL, IID_IfileOpenDialog, reinterpret_cast<void**>(&FenChoixRepertoire)) ;
    if (SUCCEEDED(hr))
    {DWORD dwOptions ;
    hr = FenChoixRepertoire->GetOptions(&dwOptions) ;
    hr = FenChoixRepertoire->SetOptions(dwOptions | FOS_PICKFOLDERS) ;
    // Afficher la fenêtre.
    hr = FenChoixRepertoire->Show(NULL) ;
    // Récupérer le nom du répertoire.
    if (SUCCEEDED(hr))
    {IshellItem *pItem ;
    hr = FenChoixRepertoire->GetResult(&pItem) ;
    if (SUCCEEDED(hr))
    {PWSTR pszFilePath ;
    hr = pItem->GetDisplayName(SIGDN_FILESYSPATH, &pszFilePath) ;
    // Afficher le résultat pour control.
    if (SUCCEEDED(hr))
    {// On met ici une fenetre surgissante temporairement.
    Application->MessageBox(pszFilePath, L"Repertoire choisi : ", MB_OK);
    CoTaskMemFree(pszFilePath);
    }
    pItem->Release();
    }
    }
    FenChoixRepertoire->Release();
    }
    CoUninitialize();
    };

    Le répertoire est stocké dans la variable pszFilePath.

    Cordialement

    Carmichael

  3. #3
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Bonsoir Carmichael,
    merci beaucoup de tes solutions.
    J'ai testé toutes les deux méthodes, elles marchent sur XE3 et XE10.
    J'ai adopté la solution moderne dans mon appli avec succès même si je ne comprends pas toutes les instructions utilisées.

    Cordialement
    Xavier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Comment Sélectionner un dossier et un application
    Par TomCar dans le forum VB.NET
    Réponses: 0
    Dernier message: 16/09/2015, 13h13
  2. Réponses: 1
    Dernier message: 29/05/2013, 10h55
  3. comment sélectionner un dossier et non un fichier
    Par edenreal dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 20/02/2009, 16h29
  4. [C#] OpenFileDialog: comment sélectionner un dossier
    Par r0d dans le forum Windows Forms
    Réponses: 1
    Dernier message: 05/09/2006, 19h16
  5. Comment vider un dossier ?
    Par Zinoc dans le forum C++Builder
    Réponses: 3
    Dernier message: 25/06/2002, 14h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo