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

VB 6 et antérieur Discussion :

[VB6]répertoire sélectionné dans dirlistbox


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut [VB6]répertoire sélectionné dans dirlistbox
    bonjour à tous
    comment éviter qu'un répertoire soit déjà sélectionné dans un dirlistbox ou
    comment faire pour que ce ne soit que le lecteur qui soit développé
    la propriété listcount renvoie le nbre de répertoire sous celui sélectionné
    mais pas le nbre hiérarchiquement supérieur? y a t'il un moyen de l'avoir.
    en fait je veux tout simplement le chemin d'accès d'un répertoire, j'aurais
    préféré utilisé un controle comme commondialog, qui se déroule de la même
    manière, mais commondialog donne directement le chemin d'un fichier. Existe
    t'il un controle qui fasse la compilation drive et dirlistbox??

    merci d'avance

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Attends : au lieu de tout embrouiller de cette façon, exprimes-toi directement et de façon simple !
    du genre :
    "je veux sélectionner un répertoire et n'avoir que le chemin d'accès du dit répertoire"
    C'est çà tout ton bastringue ?

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut
    bonsoir
    t'exite pas !! :o
    je pose plusieurs questions
    premièrement
    comment éviter qu'un répertoire soit déjà sélectionné dans un dirlistbox ou
    comment faire pour que ce ne soit que le lecteur qui soit développé
    car dans un dirlistbox il y a pardéfaut le répertoire actif lors de sa création!!

    la propriété listcount renvoie le nbre de répertoire sous celui sélectionné
    mais pas le nbre hiérarchiquement supérieur? y a t'il un moyen de l'avoir.
    là c'est clair comme question?

    en fait je veux tout simplement le chemin d'accès d'un répertoire, j'aurais
    préféré utilisé un controle comme commondialog, qui se déroule de la même
    manière, mais commondialog donne directement le chemin d'un fichier. Existe
    t'il un controle qui fasse la compilation drive et dirlistbox??
    et enfin je m'explique sur le but final! si je pouvais utiliser un controle tout fait, mais ce n'est pas pour ça que je ne veux pas avoir de réponses à mes premières question

    voilà

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Hé ben; mon vieux !
    une par une alors ?
    1) je regarde tout bêtement l'aide en ligne et te propose d'essayer celà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Form_Activate()
     Drive1.Drive = "le_chemin_de_répertoire_que_tu_veux"
    End Sub
     
    Private Sub Drive1_Change()
        Dir1.Path = Drive1.Drive .
    End Sub
     
    Private Sub Dir1_Change()
        File1.Path = Dir1.Path
     End Sub
    mais çà, c'est parce que je m'excite (pas toi !)
    commences par celà et on verra si tu mérites la suite !
    c'est volontairement que je ne te parle pas encore du FilelistBox
    A vrai dire, je m'interroge beaucoup !
    aliors : rassures-moi ..... sinon je t'abandonne là !

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut
    bonsoir
    bon je vais m'exiter!!!!!
    sérieusement tout ça j'ai compris
    mais moi quand j'ai créer mon dirlistbox j'obtiens un répertoire ouvert par défaut actuellement: "G:\mes programmes\visual studio\VB98"
    donc quand je clique dans le drivelistbox sur le lecteur D: très bien dans le dirlistbox j'ai bien le lecteur D: et les répertoires dessous et aucun ouvert, mais si je reclique sur le lecteur G: dans le dirlistbox j'ai G: dessous ouvert mes programes, dessous ouvert aussi visual studio et encore dessous ouvert VB98.

    et je ne veux pas particulièrement un répertoire je veux que l'utilisateur puisse choisir son répertoire sans être obligé de remonter dans la hiérarchie.

    Je ne sais pas si je suis clair

  6. #6
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Avant d'aller plus loin, une question : Sous quel langage dévelloppes-tu ton appli ?

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut
    sous VB6

  8. #8
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Bon !
    ce qui m'inquiétait, c'érait celà :
    "G:\mes programmes\visual studio\VB98"
    Alors :
    si tu avais testé le petit bout de code donné plus haut, tu te serais rendu compte de ce que le répertoire ouvert n'était pas celui de ton appli en cours mais celui déterminé par :
    Drive1.Drive = "le_chemin_de_répertoire_que_tu_veux"
    Mais, à propos de répertoire ouvert par défaut, qui est celui de l'appli en cours, précisément : comment peux-tu être en VB6 et avoir
    G:\mes programmes\visual studio\VB98
    ?
    Expliques !

  9. #9
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut
    en fait le répertoire c'est microsoft visual studio.
    mais là n'est pas l'important je suis bien en VB6

    j'ai bien testé ton code, mais si je déclare C: il souvre bien sur c: mais aussitot que je reselectionne G: là il souvre sur ....VB98

  10. #10
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    ben... et avec l'explorateur, quel serait le 1er affiché dans G ?

  11. #11
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut
    avec l'explorateur de window quand tu choisi un lecteur il ouvre le lecteur t'affiche les répertoire et c'est tout et là dans G: j'ai d'autres répertoires.

    çc me gêne un peu car je voulais dimensionner mon dirlistbox en fonction du nombre de répertoires sous le lecteur, alors sur les autres lecteurs ça fonctionne bien mais sur G: comme il s'ouvre sous trois niveaux je ne peux pas savoir combien il y a de répertoire car listcount ne donne que le nombre de répertoire sous le répertoire sélectionné

  12. #12
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    je ne comptends pas .
    Evoies ton code où sont gérés Dir1, Drive1 et List1, que je puisse voir !
    Tu ne confondrais pas l'explorateur avec ce que tu obtiens en cliquant sur "Poste de travail" ?
    Quand je dis explorateur, je parle de ce que tu ouvres en cliquant du bouton droit sur démarrer puis du bouton gauche sur Explorer ( C'est çà, l'explorateur !). Et tes dir1, Drive1, List1 ne te conduisent qu'à l'équivalent de Explorer.exe (qui est ce que je viens de te rappeler et pas autre chose !)

  13. #13
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut
    pas grave

    j'ai introduit une petite vérif pour obtenir ce que je veux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
     
    Private Sub Drive1_Change()
    Dim i
    Dir1.Path = Drive1.Drive
    Do While Dir1.List(i) <> ""
        i = i - 1
    Loop
     
    Dir1.Path = Drive1.Drive
    Dir1.Height = ((Dir1.ListCount + 1) * 16) + 5 'adapte la hauteur au nbre de répertoire
    OK.Top = Dir1.Top + Dir1.Height
    Annulé.Top = OK.Top
    Dir1.Enabled = True
    Dir1.Visible = True
    OK.Visible = True
    Annulé.Visible = True
     
    End Sub
    Private Sub Drive1_GotFocus()
    Dim i
    Dir1.Path = Drive1.Drive
    Do While Dir1.List(i) <> ""
        i = i - 1
    Loop
     
    Dir1.Path = Dir1.List(i + 1)
    Dir1.Height = ((Dir1.ListCount + 1) * 16) + 5 'adapte la hauteur au nbre de répertoire
    OK.Top = Dir1.Top + Dir1.Height
    Annulé.Top = OK.Top
    Dir1.Enabled = True
    Dir1.Visible = True
    OK.Visible = True
    Annulé.Visible = True
     
    End Sub
     
    Private Sub Dir1_Change()
    PathFile = Dir1.Path
    Dir1.Height = ((Dir1.ListCount + 1) * 16) + 5 'adapte la hauteur au nbre de répertoire
    OK.Top = Dir1.Top + Dir1.Height
    Annulé.Top = OK.Top
     
    End Sub
     
     
    Private Sub setup_Click()
    LabPathFile.Visible = True
    'Drive1.Drive = "c:"
    'Dir1.Path = Drive1.Drive
    Drive1.Enabled = True
    Drive1.Visible = True
     
    end sub

  14. #14
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut
    petite erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Private Sub Drive1_Change() 
    Dim i 
    Dir1.Path = Drive1.Drive 
    Do While Dir1.List(i) <> "" 
        i = i - 1 
    Loop 
     
    Dir1.Path = [color=red]Drive1.Drive [/color] [u]Dir1.List(i + 1)[/u]
    Dir1.Height = ((Dir1.ListCount + 1) * 16) + 5 'adapte la hauteur au nbre de répertoire 
    OK.Top = Dir1.Top + Dir1.Height 
    Annulé.Top = OK.Top 
    Dir1.Enabled = True 
    Dir1.Visible = True 
    OK.Visible = True 
    Annulé.Visible = True 
     
    End Sub

  15. #15
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut
    bonne nuit

  16. #16
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    J'ai regardé et re-regardé ton code :
    1) la correction que tu as apportée est, telle qu'elle est, incompréhensible, y compris après avoir enlevé les balises de style (à ne jamais utiliser dans des balises code)
    2) j'ai des difficultés à comprendre le résultat exact que tu veux atteindre :
    - une lecture attentive me donne à penser :
    a) que le scalemode de ta "Form" est en points
    b) que tu cherches à afficher une dirbox dont la hauteur serait proprotionnelle au nombre de répertoires, mais sans que je puisse bien voir si tu veux, d'entrée de jeu, un déploiement total des répertoires et sous-répertoires présents ou si tu veux que cette hauteur ne change qu'à l'occasion des déploiements successifs que tu déciderais de faire à l'intérieur de ta dirbox

    je vois également que tu cherches à modifier la hauteur de ta dirbox quand tu changes de drive, mais ai de grosses difficultés à deviner ce que tu veux faire exactement à ce moment-là !

    Il va falloir que, dans tout ce machin, tu t'expliques très clairement sur le résultat que tu veux atteindre (étape par étape)....

    Je ne comprends enfin pas pourquoi tu veux aggrandir ou diminuer la hauteur d'affichage. C'est assez curieux comme méthode et me demande ce qui se passerait dans les cas d'un nombre impressionnant de répertoires présents (hauteur forcément supérieure à celle de ta Form).
    C'est un peu comme si tu demandais à l'explorateur de Windows de faire une telle chose (il ne modifie pas la hauteur de la fenêtre ouverte). Les ascenseurs sont là pour parcourir.
    Je comprends d'autant moins que tu dis, par ailleurs, que tu aurais aimé utiliser commondialog, dont les dimensions d'affichage ne bougent pas !)

    Bref, tout celà me parait bien confus !

    Quoi qu'il en soit (avec ton code actuel) : utilises MsgBox Dir1.ListCount dans chacun de tes 3 événements, observes ce qui se passe... et tires-en les conclusions (c'est la raison principale de ma question relative au genre de déploiement et au moment de ce déploiement ...)

  17. #17
    Membre éclairé
    Inscrit en
    Avril 2004
    Messages
    513
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 513
    Par défaut
    bonjour

    je m'excuse je n'avais pas vu l'effet des corrctions
    la correction que tu as apportée est, telle qu'elle est, incompréhensible, y compris après avoir enlevé les balises de style (à ne jamais utiliser dans des balises code)
    exacte le scalemode de ma form est en pixel, pas important car pour l'instant ce n'est pas dans la bonne form, ça c'est du détail que je réglerais correctement après!

    exacte je veux que le dirbox fasse apparaitre le le lecteur et les répertoires dessous, pas les sous répertoires!
    je veux que cette taille s'adapte aux changements successifs à l'intérieur de la dirbox.

    je vois également que tu cherches à modifier la hauteur de ta dirbox quand tu changes de drive, mais ai de grosses difficultés à deviner ce que tu veux faire exactement à ce moment-là !
    Quand je lance mon setup je vois d'abord apparaitre le drivebox, là je choisi le lecteur qui m'intéresse , et je veux que mon dirbox affiche bien le lecteur et les repertoires dessous(pas les sous répertoires)


    le départ de mon post

    quand je sélectionne dans le drivebox le lecteur G: dans le dirbox c'est le dossier vb98 qui est ouvert
    comme je voulais ne voir que le lecteur et les dossier de g: j'ai utilisé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dir1.Path = Drive1.Drive
    Do While Dir1.List(i) <> ""
        i = i - 1
    Loop
    Dir1.Path = Dir1.List(i + 1)
    qui me permet justement de trouver le nbre de répertoire dans le lecteur sélectionné dans le drivebox

    et me demande ce qui se passerait dans les cas d'un nombre impressionnant de répertoires présents (hauteur forcément supérieure à celle de ta Form).
    c'est vrai je vais inclure une taille maximum
    l'explorateur de Windows de faire une telle chose (il ne modifie pas la hauteur de la fenêtre ouverte). Les ascenseurs sont là pour parcourir. ...
    ....commondialog, dont les dimensions d'affichage ne bougent pas !)
    Dans l'explorateur ou dans common dialog pour l'affichage des dossier ça se présente sous forme de colonne, bien souvent tous les répertoires sont visibles d'un coup! deplus il n'y a pas de répertoire ouvert par défaut lorsqu'on change de lecteur

    voici mon code bien révisé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    Private Sub Form_Load()
    LabPathFile.Caption = "Sélectionnez le Répertoire contenant vos Images"
    Frm_setup.Show
    Drive1.Drive = "c:"
     
    End Sub
    Private Sub Annuler_Click()
    Dim réponse
    réponse = MsgBox("Voulez vous quitter le programme", vbYesNo + vbDefaultButton2) 'deux type de boutons _
                                                        oui et non et le deuxième est par défaut
    If réponse = vbYes Then End
    End Sub
     
     
    Private Sub OK_Click()
    Dim FileIni As Long
    FileIni = FreeFile
    Open "g:\mes documents\mes images\veille.ini" For Output As FileIni
    Print #FileIni, PathFile
    Close #FileIni
    Unload Frm_setup
    create_file
    End Sub
     
     
    Private Sub Drive1_Change()
    Dim i
    Dir1.Path = Drive1.Drive 'pour déterminer quel lecteur sera affiché dans dirbox
     
    'si le lecteur choisi correspond au lecteur du répertoire de l'application en cours _
    ce répertoire sera ouvert dans le dirbox.Et c'est ce répertoire qui a l'index -1 dans la liste. _
    Pour afficher le lecteur et ses répertoires il faut _
    chercher quel index dans la liste le lecteur possède. En remontant juqu'à dépasser l'index _
    on trouve le nbre de niveau hiérarchique supérieur au répertoire de l'application en cours
    Do While Dir1.List(i) <> ""
        i = i - 1
    Loop
    Dir1.Path = Dir1.List(i + 1) 'i+1 correspond au lecteur
    Dir1.Height = ((Dir1.ListCount + 1) * 225) + 90 'adapte la hauteur au nbre de répertoire _
                                                    une ligne doit faire 225 +90 de bordures
    If Dir1.Height >= 12375 Then Dir1.Height = 12375 'limite la taille
    OK.Top = Dir1.Top + Dir1.Height 'positionne les boutons juste sous le dirbox
    Frm_setup.Height = OK.Top + OK.Height + 480 'ajuste la form(480 pour la hauteur de la barre de titre)
    Annuler.Top = OK.Top
    End Sub
     
    Private Sub Dir1_Change()
    Dim i
    i = -1
    Do While Dir1.List(i) <> ""
        i = i - 1
    Loop
    'i est négatif, liscount ne donne que le nbre de répertoire sous le répertoire sélectionné
    Dir1.Height = ((Dir1.ListCount - i - 1) * 225) + 90 'adapte la hauteur au nbre de répertoire
    If Dir1.Height >= 12375 Then Dir1.Height = 12375
    OK.Top = Dir1.Top + Dir1.Height
    Frm_setup.Height = OK.Top + OK.Height + 480
    Annuler.Top = OK.Top
    PathFile = Dir1.Path
    End Sub

Discussions similaires

  1. renommer un fichier sélectionné dans un répertoire
    Par modus57 dans le forum VBScript
    Réponses: 8
    Dernier message: 12/01/2015, 19h38
  2. [VB6] [Excel] Feuille dans une form, sans excel installé
    Par ro2v dans le forum Installation, Déploiement et Sécurité
    Réponses: 3
    Dernier message: 05/05/2010, 12h45
  3. Réponses: 2
    Dernier message: 24/11/2006, 08h54
  4. ligne sélectionnée dans une dbGrid
    Par RBIK dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/07/2004, 17h13
  5. [VB6] [Graphisme] Inversion dans picturebox
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 23
    Dernier message: 16/04/2003, 15h05

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