DDelec24
Messages postés109Date d'inscriptionjeudi 23 octobre 2003StatutMembreDernière intervention23 octobre 2007
-
25 juil. 2004 à 12:26
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 2008
-
26 juil. 2004 à 20:16
Bonjour tout le monde.
Dans mon programme, j'inclu un petit lecteur wav (prévisualisation) et je voudrais que l'on puisse ajouter plusieurs .wav dans une listbox a partir de mon common dialog.
Lorsque j'ajoute un seul fichier, le path et le filename sont ajouté correctement dans la listbox (c:\path\fichier.wav), mais lorsque je saisi plusieurs wav, il ne rajoute qu'une seule ligne, avec seulement le path (c:\path\)
J'ai essayer avec une boucle for next, mais cela ne fonctionne pas.
J'ai regarder des sources, mais aucunes ne permet de selectionner plusieurs fichiers simulatennement pour les rajouté dans une listbox.
J'espère avoir été clair, c'est pas facile a expliquer.
Merci de vos réponses :)
AigleNoir ?-)
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 25 juil. 2004 à 23:15
Oups,
j'ai retester le code et visiblement y a un ptit truc que j'ai oublier
(en fait le dernier fichier ne s'ajoute pas au listbox)
je vais tout de suite ajouter ce code source dans ce merveilleux site si tu veux le consulter.
Voici le code à nouveau avec quelques commentaire :
' cdlOFNAllowMultiselect : multi-sélection
' cdlOFNNoLongNames :Afficher les noms de fichiers longs en mode DOS
cdl.Flags = cdlOFNAllowMultiselect Or cdlOFNNoLongNames
cdl.Filter = "*.*"
cdl.FileName = "*.*"
cdl.Action = 1
List1.Clear ' effacer la liste
result = Trim(cdl.FileName) 'extrait le resultat de la boite de dialogue
j = 1
testchemin = 0
chemin = "" 'variable pour le chemin
For i = 1 To Len(result)
Debug.Print Mid(result, i, 1) If Mid(result, i, 1) Chr$(32) Or i Len(result) - 1 Then
If testchemin = 0 Then ' extraire la première partie du résultat (le chemin)
chemin = Trim(Mid(result, j, i))
testchemin = 1
j = i + 1
Else ' extraire la partie suivante du résultat (le fichier) et lui ajouter le chemin au début
List1.AddItem chemin + Mid(result, j, i - j)
j = i + 1
End If
End If
Next
' tester si la liste est vide alors c'est que le résultat contient seulement un fichier séléctionné
If List1.ListCount = 0 Then List1.AddItem Trim(cdl.FileName)
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 25 juil. 2004 à 17:36
salut,
il faut que tu actives le Flags du control par la ligne suivante :
cdl.Flags = cdlOFNAllowMultiSelect or cdlOFNNoLongNames
ca te permet de selectionner plusieurs fichiers et meme des noms de fichiers longs. tu auras une chaine de caracteres qui contient les noms de fichiers selectionnes séparé par des espaces (chr(32)) .
DDelec24
Messages postés109Date d'inscriptionjeudi 23 octobre 2003StatutMembreDernière intervention23 octobre 2007 25 juil. 2004 à 19:42
Merci.
J'ai déja ce code en faite, mon problème c'est que je n'arrive pas a trouvé de méthode pour mettre les fichiers selectionnés a la suite dans une listbox :(
Je vais encore essayer des manip ce soir, mais je n'y arrive pas, donc si on pourrais m'aider un tout petit peu :)
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 25 juil. 2004 à 22:32
Bon,
Je n'ai pas trop le temps de commenter le bout de code que j'ai fais pour toi.
Et SVP de ne pas critiquer ma facon de coder en VB car ca m'a pris 10 minutes pour faire ce code alors je n'ai pas fais attention à l'optimisation ou chercher une meilleur méthode. mais l'essentiel c'est que ca marche.
List1 : ListBox
cdl : Commondialog
Voici le code :
'************************************************
cdl.Flags = cdlOFNAllowMultiselect Or cdlOFNNoLongNames
cdl.Filter = "*.*"
cdl.Action = 1
List1.Clear
result = Trim(cdl.FileName)
j = 1
testchemin = 0
chemin = ""
For i = 1 To Len(result)
Debug.Print Mid(result, i, 1)
If Mid(result, i, 1) = Chr$(32) Then
If testchemin = 0 Then
chemin = Trim(Mid(result, j, i))
testchemin = 1
j = i + 1
Else
List1.AddItem chemin + Mid(result, j, i - j)
j = i + 1
End If
End If
Next
If List1.ListCount = 0 Then List1.AddItem Trim(cdl.FileName)
cs_bobo91
Messages postés107Date d'inscriptiondimanche 27 juin 2004StatutMembreDernière intervention12 novembre 2006 25 juil. 2004 à 23:25
bonsoir je voulai juste te signaler qu'il y a probleme dans ton code .
en multiselection,tous les 2 fichiers il sont separer d'un espace.
donc tu te retrouve avec 2 fichier sur une mem ligne de la liste.
a bientot et merci d'aider les autre c cool.
cs_bobo91
Messages postés107Date d'inscriptiondimanche 27 juin 2004StatutMembreDernière intervention12 novembre 2006 25 juil. 2004 à 23:32
c'est bon ton code marche a merveil c cool.
par si tu peux me dire pourkoi avec le code flag &H80000 soit style windows.
impossible de recuperer les chemin complet en multiselection.
VB.c'est quoi se bordel.
je suis parti du mem principe que toi mais il me sort que la directorie.essai de voir tu comprendra mieu.
merci de ton aide et @+.
cs_bobo91
Messages postés107Date d'inscriptiondimanche 27 juin 2004StatutMembreDernière intervention12 novembre 2006 26 juil. 2004 à 00:06
ta commande de flag ne me lance pas la boite de windows donc j'ai fais :
cdl.Flags = cdlOFNAllowMultiselect + cdlOFNNoLongNames + &H80000
mais toujour pas possible de recuperrer le nom des fichier dans une liste (en multiselection) par contre un fichier ca fonctionne il me donne bien DIRECTORIE\FICHIER
ah oui tres important je voulai precider que par contre je recupere bien tous les fichier mais en debugage fenetre.
je voulais ajouter qu'il il faudra qu'il augmente aussi la taille du buffer de son cdl sinon il va pas pouvoir s'endormir en ecoutant des wav assez longtemps.lol
DDelec24
Messages postés109Date d'inscriptionjeudi 23 octobre 2003StatutMembreDernière intervention23 octobre 2007 26 juil. 2004 à 10:37
Je te remerci beaucoup!!!!
J'avais bien fais avec une boucle, mais une erreur quelque part faisais que ca ne marchais pas :(
Peut etre est-ce parceque je n'est pas utilisé la fonction trim()
En tout cas merci de ton aide!!! :-p
AigleNoir ?-)
cs_bobo91
Messages postés107Date d'inscriptiondimanche 27 juin 2004StatutMembreDernière intervention12 novembre 2006 26 juil. 2004 à 16:25
bonjour a toi frop01 la source ne fonctionne pas correctement si les fichiers comportent des espace. (en multiselection)
j'ai essayer de mon coter mais ca donne rien.
bonne continuation.
cs_bobo91
Messages postés107Date d'inscriptiondimanche 27 juin 2004StatutMembreDernière intervention12 novembre 2006 26 juil. 2004 à 18:52
ci c'est celle qui comporte un module "IDBAS_commondialog"
c'est qu'on parle bien de la meme.
celle ci a un probleme.
celle ci quand tu ouvres 2 fichier wav aillant des espace chacun
le "" de la directorie finale ne ressort pas.dit moi si j'me trompe.
je parle bien en multiselection
si tu ouvre 1 seul fichier comportant un espace pas de prob mais avec 2 si.
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 26 juil. 2004 à 20:16
ahhh oui j'a vais pas vu ca
merci bobo
allez dans Form1 puis dans la procedure Command1
Au lieu de :
For Count = 1 To sOpen.nFilesSelected
List1.AddItem sOpen.sLastDirectory + sOpen.sFiles
Next Count
chez par :
For Count = 1 To sOpen.nFilesSelected
If Right$(Trim(sOpen.sLastDirectory), 1) <> "" Then
List1.AddItem sOpen.sLastDirectory + "" + sOpen.sFiles(Count)
Else
List1.AddItem sOpen.sLastDirectory + sOpen.sFiles(Count)
End If
Next Count