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 :

SelectDirectory() avec visualisation des fichiers


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par défaut SelectDirectory() avec visualisation des fichiers
    Bonjour,

    j'utilise builder 6 et la fonction SelectDirectory() pour sélectionner un répertoire.
    J'aimerai que lors de la navigation dans les répertoires on puisse voir les fichiers contenus sous les répertoires...
    Est ce possible ?

    merci !
    Pascale38

  2. #2
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Pourquoi ne ps utiliser un TOpenDialog pour voir les fichiers (onglet Dialogue de la palette des composants)?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par défaut
    Parce que ce dont j'ai besoin c'est de sélectionner un répertoire et OpenDialog ne le permet pas (à ma connaissance en tout cas)
    OpenDialog-> sélection de fichiers
    SelectDirectory-> sélection de répertoire mais on ne voit pas les fichiers contenus sous les répertoires...

    Bref il me faudrait un mix des 2

    merci,
    Pascale38

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Par défaut
    Il est possible avec OpenDialog de sélectionner un fichier.
    Il suffit ensuite d'en extraire le chemin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    extern PACKAGE AnsiString __fastcall ExtractFileDir(const AnsiString FileName);

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut Pascale38
    Si c'est un explorateur type window tu peux utiliser des composants
    Sur la Form un TDriveComboBox, un TDirectoryListBox, un TFileListBox
    Dans DriveComboBox1 renseigner DirList avec "DirectoryListBox1"
    Dans DirectoryListBox1 renseigner FileList avec "FileListBox1"

  6. #6
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut
    Tu peux aussi utiliser directement l'API Windows SHBrowseForFolder avec l'option BIF_BROWSEINCLUDEFILES.

  7. #7
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Tu peux utiliser l'option sdShowFiles avec SelectDirectory:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        String Caption = "Sélectionne quelque chose:";
        const String Root = "";
        String Directory = "C:\\Program Files\\";
        TSelectDirExtOpts Options = TSelectDirExtOpts() << sdNewUI << sdShowFiles;
     
        if(SelectDirectory(Caption, Root, Directory, Options))
        {
            // Quelque chose doit aller ici
        }
    Pour la méthode de 10_GOTO_10, tu peux aller voir la FAQ.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par défaut
    ouahhhh super !!
    merci pour toutes ces réponses !

    Alors en réponse à crayon :
    j'ai l'impression que cette option et la forme de la fonction SelectDirectory que tu me proposes n'existe pas dans Builder 6...
    [C++ Error] Restore.cpp(30): E2451 Undefined symbol 'TSelectDirExtOpts'
    [C++ Error] Restore.cpp(30): E2451 Undefined symbol 'sdNewUI'
    [C++ Error] Restore.cpp(30): E2451 Undefined symbol 'sdShowFiles'
    [C++ Error] Restore.cpp(32): E2285 Could not find a match for 'SelectDirectory(AnsiString,const AnsiString,AnsiString,TSelectDirOpts)'

    En réponse à 10_GOTO_10 :
    arghhhh ....
    Je vais essayer l'idée de Blondelle

    encore merci !!
    Pascale38

  9. #9
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    SelectDirectory existe sous deux formes !
    La 1ere est une simple arborescence
    La 2nde est déjà une composition de TDriveComboBox, un TDirectoryListBox, un TFileListBox regroupé dans la Forme TSelectDirDlg, j'avais repris le code en Delphi pour écrire une variante autorisant la sélection d'un dossier seulement si celui ci contenait des fichiers selon un filtre !
    Pascale38, vérifie les deux formes d'appel, les paramètres sont différents, c'est celle avec Directory en 1er Paramètre !

    Attention, la seconde forme, est de moins en moins pertinente, sous vista, par exemple les lecteurs réseau n'apparaissent plus !

    OpenDialog permet aussi de sélectionner un Dossier avec un peu de ruse comme dans "Fiche de sélection de répertoire avançée"
    Mais surtout, voir la MSDN Open and Save As Dialog Boxes, avec un peu de courage, on peut surcharger la WndProc et intercepter WM_NOTIFY avec lorsque "OFNOTIFY->hdr == CDN_FOLDERCHANGE"
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par défaut
    oui mais la seconde forme de SelectDirectory prend en 2ème paramètre TSelectDirOpts et dans le choix des options il n'y a pas d'option pour afficher les fichiers...

    Bon sinon le TDirectoryListBox lié à une TFileListBox pourrait faire l'affaire...
    sauf que seul un seul lecteur apparait !!! ??? Je ne peux pas naviguer dans les différents lecteurs...

    bon je continue à investiguer...

    merci encore !
    Pascale38

  11. #11
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Tu doit associer un TDriveComboBox pour selectionner un lecteur

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par défaut
    oui je viens de voir ça !!
    Bon ça marche nickel !!
    Mais c'est bizarre quand même comme solution, un peu lourd non???
    Décomposer la recherche dans 3 composants, quelle drôle d'idée !!

    Pourquoi faire simple quand on peut faire compliquer....

    Merci à tous en tout cas !
    Pascale38

  13. #13
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    Citation Envoyé par Pascale38 Voir le message
    oui mais la seconde forme de SelectDirectory prend en 2ème paramètre TSelectDirOpts et dans le choix des options il n'y a pas d'option pour afficher les fichiers...
    Je ne comprends pas ton problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      AnsiString Directory = "";
      SelectDirectory(Directory, TSelectDirOpts(), 0); // Utilise cette variante !
      SelectDirectory("Hey !", "", Directory); // Variante différente entre BCB6 et 2007
    Si la combinaison Old School DriveCombo\DirectoryList\FileList te convient, pourquoi ne pas utiliser la variante adéquate de SelectDirectory, par défaut cette variante affiche les fichiers, pas besoins d'options supplémentaires !
    Images attachées Images attachées  
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Par défaut
    ok oui ça marche très bien !!
    je n'avais effectivement pas compris, j'essayais de lui préciser "sdShowFiles" dans les options et ça marchait pas...

    Bon ben c'est super merci beaucoup !!!
    Pascale38

  15. #15
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Pour ceux qui possède une version plus récente de C++Builder. Il existe une classe qui se nomme TFileOpenDialog qui possède dans sa propriété Options une valeur fdoPickFolders. Elle sert à choisir des dossiers à la place de fichiers.

    Malheureusement, TFileOpenDialog n'est supporté que depuis Windows Vista car elle utilise l'interface IFileOpenDialog. En plus, lorsque fdoPickFolders est sélectionné les fichiers ne sont pas affichés.

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

Discussions similaires

  1. [DTD] utiliser avec JAVA des fichiers DTD pour vérifier la validité des fichiers XML
    Par Balbuzard dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 20/04/2009, 12h10
  2. Réponses: 2
    Dernier message: 16/01/2009, 11h04
  3. Selection dossier avec visu des fichiers
    Par tAKAmAkA dans le forum IHM
    Réponses: 1
    Dernier message: 30/11/2008, 17h00
  4. Batch de copie avec tri des fichiers
    Par zoozbiro dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 05/11/2008, 13h59
  5. [E-03] ListBox avec liste des fichiers d'un dossier
    Par Daejung dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/11/2008, 01h43

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