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
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
Pourquoi ne ps utiliser un TOpenDialog pour voir les fichiers (onglet Dialogue de la palette des composants)?
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
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);
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"
Tu peux aussi utiliser directement l'API Windows SHBrowseForFolder avec l'option BIF_BROWSEINCLUDEFILES.
Tu peux utiliser l'option sdShowFiles avec SelectDirectory:
Pour la méthode de 10_GOTO_10, tu peux aller voir la FAQ.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10String 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 }
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
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
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
Tu doit associer un TDriveComboBox pour selectionner un lecteur
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
Je ne comprends pas ton problème
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 !
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
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
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
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.![]()
Partager