begin process at 2010 03 21 06:51:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

General

 > 

afficher contenu treeview dan sun listview


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

afficher contenu treeview dan sun listview

jeudi 3 juillet 2008 à 16:14:58 | afficher contenu treeview dan sun listview

fredoo033

Bonjour à tous je ne sais pas si c'est le bon endroit mais c'est celui qui me semble le mieu. je voudrai réaliser un code du style de l'explorateur windows. En fait je réalise un serveur me permettant de relever des valeurs dans des automates.
Chaque automate à ses propres valeurs.
voici comment je voudrai afficher les choses :

Treeview : "Nom automate"
|_ _ _ _ _ adresse valeur 1
|_ _ _ _ _ adresse valeur 2
|_ _ _ _ _ .......
"Nom automate 2"
|_ _ _ _ _ adresse valeur 1
|_ _ _ _ _ adresse valeur 2
|_ _ _ _ _ .......
dans mon listview :
quand je clique sur "Nom automate" dans le treeview je voudrai que les valeurs de "nom automate" s'affiche dans le listview. Si je clique sur "Nom automate 2" les valeurs de "nom automate 2" s'affiche et efface les valeurs précédentes.

Je pense que c'est possible grace à la fonction expand du treeview. J'arrive à lire les données ce n'est pas un problème mais c'est cette gestion d'affichage quui me pose problème. J'espère avoir été clair et je remercie par avance toute les personnes qui vont m'aider.

 

jeudi 3 juillet 2008 à 21:27:34 | Re : afficher contenu treeview dan sun listview

titicar

Réponse acceptée !
Salut,

La fonction 'expand' du TreeView ne fait que afficher les enfants du parent "Nom automat X"... dans le TreeView!
Un TreeView ne peut pas agir directement sur un ListView car ceux sont 2 contrôles indépendant.
Pour lié un TreeView à un ListView, il faut donc écrire quelques lignes de VB pour dire : "Si l'on clique sur l'item X de TreeView, alors on affiche 'ce que l'on veut' dans un ListView".

Il y a donc au moins au minimum 2 procédures à écrire :
1° et d'après le TreeView : Détecter le click (évènement NodeClick) sur l'item choisi (mémoriser les informations qu'il faut?) et appeler une procédure concernant l'affichage du ListView, au l'occurence la 2° qui suit:
2° et d'après le ListView : Traitement de l'affichage d'après les information mémorisés du TreeView.

Rassure-toi, ça n'est pas bien compliqué.
Je ne veux pas te donner un exemple tout fait pour tes besoins car je ne connais pas la nature de tes valeurs (NomAutomate\Valeur 1, NomAutomate\Valeur 2, etc).

Si ces valeurs ne sont que des caractères alpha-numérique (type String) pas trop long, il serait peut-être intéressant de les mémoriser directement dans la propriété Key ou Tag de chaque Item du TreeView (TreeView1.Nodes(x).Tag). Dès lors, toutes les informations (adresse de chaque valeur ET sa valeur associée) sont mémorisées directement dans le TreeView. Et l'affichage dans le ListView ne dépend donc que du TreeView.

titicar
vendredi 4 juillet 2008 à 09:31:58 | Re : afficher contenu treeview dan sun listview

fredoo033

Merci titicar pour ta réponse. Mais je ne vois pas comment je peut faire pour récupérer tous les noeud enfant du node sur lequel j'ai cliquer.
vendredi 4 juillet 2008 à 21:42:56 | Re : afficher contenu treeview dan sun listview

titicar

Réponse acceptée !
Salut,
Pour trouver tous les enfants associés à un parent, il y a plusieurs possibilités.
Je vais en donner une qui fonctionne pour ton cas, mais pas pour les cas en général, du genre FileExplorer.

ATTENTION : J'utilise les contrôles SP6 [Microsoft Windows Common Controls 6.0 (SP6)] concernant les TreeView, ListView, etc

Je me base sur la propriété TreeView.Nodes(X).Parent
En fait, on scrute tous les nodes et l'on vérifie pour chacun d'eux si le parent correspond au node sur lequel on a cliqué.
On peut faire cette vérif d'après plusieurs propriétés comme TreeView.Nodes(X).Parent ou '.Key' ou encore '.FullPath'.

Dans ton cas, on peut donc utiliser '.Parent' et donc à la condition que tes "Nom automate" ne soient pas utilisés comme nom pour les enfants. De même, les enfants ne doivent pas développer des 'sous-enfant' (et devenir eux-même parents).

Dans ce contexte, la recherche des enfants pourrait ressembler à ça:
    ' NodeParent = type String défini = node sur lequel on a cliqué
    For X = 1 To TreeView1.Nodes.Count
        If TreeView1.Nodes(X).Parent = NodeParent Then
            '# Ce node est un enfant de NodeParent. On l'affiche dans le ListView:
            '...Traitement de l'affichage dans le ListView
        End If
    Next X

Il faut aussi ajouter une gestion d'erreur car dans la boucle il y a des nodes qui n'ont pas de parents !


Si tu as défini ton ListView avec 2 colonnes (Adresse Valeur et Valeur associée), la recherche des enfants et l'affichage dans le ListView ressemblerait à ça:

Private Sub AfficheValeurs(ByVal NodeParent As String, myTV As TreeView, myLV As ListView)
Dim X As Long
Dim itmX As ListItem
    myLV.ListItems.Clear
   
If NodeParent = vbNullString Then Exit Sub
   
On Local Error GoTo ErrorAfficheValeurs 'Util au minimum dans le premier noeud car il n'a pas de parent!
   
For X = 1 To myTV.Nodes.Count
       
If myTV.Nodes(X).Parent = NodeParent Then
           
'# Ce node est un enfant de NodeParent. On l'affiche dans le ListView:
            Set itmX = myLV.ListItems.Add(, , myTV.Nodes(X).Text) '1ère colonne = AdresseValeur
            itmX.SubItems(1) = "Ma valeur ..." '2ème colonne = Valeur associée
            '! Ou peut-être : itmX.SubItems(1) = myTV.Nodes(X).Tag '-> Si la valeur est mémo
dans le tag par ex.
        End If
AfficheValeurs_NextNode:
    Next X
    On Local Error GoTo 0
   
    GoTo EndAfficheValeurs
ErrorAfficheValeurs:
    Resume AfficheValeurs_NextNode
EndAfficheValeurs:
End Sub



Et l'interception du click sur le TreeView serait:

Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
    AfficheValeurs Node.Text, TreeView1, ListView1
End Sub




Pour le test, Ouvrir un nouveau projet, avec Form1 par défaut. Copier les 2 sub privées ci-dessus et ajouter:

Private Sub Form_Load()
    '# Version des contrôles utilisés:
    '-  TreeView et ListView : Microsoft Windows Common Controls 6.0 (SP6)
   
    '# Positions et dimensions des objets:

    Form1.Width = 8715: Form1.Height = 4335
    TreeView1.Width = 2895: TreeView1.Height = 2895
        TreeView1.Left = 120: TreeView1.Top = 120
    ListView1.Width = 5295: ListView1.Height = 2895
        ListView1.Left = 3120: ListView1.Top = 120
       
    '# Initialisation de TreeView1:
Dim TopNode As Node, NodX As Node
    With TreeView1
        .LineStyle = tvwRootLines 'Affiche le '+' à gauche
        .Indentation = 250 'Décalage des enfants par rapport aux parents
        .LabelEdit = tvwManual 'Interdit la modification manuelle des noms des Nodes
        .Nodes.Clear
        .Sorted = True
        Set TopNode = .Nodes.Add(, , , "Nom automate1") 'Création d'un nouveau Parent
            Set NodX = .Nodes.Add(TopNode, tvwChild, , "AdresseValeur 1.1")
            Set NodX = .Nodes.Add(TopNode, tvwChild, , "AdresseValeur 1.2")
            Set NodX = .Nodes.Add(TopNode, tvwChild, , "AdresseValeur 1.3")
            Set NodX = .Nodes.Add(TopNode, tvwChild, , "AdresseValeur 1.4")
        Set TopNode = .Nodes.Add(, , , "Nom automate2") 'Création d'un nouveau Parent
            Set NodX = .Nodes.Add(TopNode, tvwChild, , "AdresseValeur 2.1")
            Set NodX = .Nodes.Add(TopNode, tvwChild, , "AdresseValeur 2.2")
            Set NodX = .Nodes.Add(TopNode, tvwChild, , "AdresseValeur 2.3")
            Set NodX = .Nodes.Add(TopNode, tvwChild, , "AdresseValeur 2.4")
        Set TopNode = .Nodes.Add(, , , "Nom automate3 (vide)") 'Création d'un nouveau Parent
    End With
   
    '# Initialisation du ListView1:
    With ListView1
        .View = lvwReport '(=3) Mode Détail avec plusieurs colonnes
        .FullRowSelect = True 'Sélectionne toute la ligne
        .LabelEdit = tvwManual 'Interdit la modification manuelle des lignes
        .ColumnHeaders.Clear 'Efface toutes les lignes
        .ColumnHeaders.Add , , "AdresseValeur", 2000 'Ajoute une nouvelle colonne
        .ColumnHeaders.Add , , "Valeur", 2000 'Ajoute une nouvelle colonne
    End With
End Sub



titicar
lundi 7 juillet 2008 à 09:19:08 | Re : afficher contenu treeview dan sun listview

fredoo033

Un grand merci à toi titicar ca fonctionne très bien. encore enorme merci à toi j'en demandé pas tant. 

 

lundi 7 juillet 2008 à 18:50:06 | Re : afficher contenu treeview dan sun listview

titicar

Pas de quoi, ravis que ça puisse t'aider ;-)

titicar


Cette discussion est classée dans : listview, valeurs, treeview, adresse, automate


Répondre à ce message

Sujets en rapport avec ce message

Affichage dans treeview et listview de la liste des fichiers d'une adresse ftp [ par Anthomicro ] Bonjour,j'aimerais savoir si il existe un code me permettant de recevoir la liste des répertoires et des fichiers qui sont dans une adresse ftp et d'a aide sur les treeview et listview [ par guillaume ] Bonjour,je suis débutant et je cherche à faire cela :Du coté gauche, un treeview dans lequel je trouve le poste de travial avec tous mes lecteurs, que Récupérer les valeurs d'un champ [ par BSide ] Bonjour,j'ouvre une BD en utilisant ADO.L'objectif est de faire apparaître dans un treeview la structure de la base (tables + champs : ca c'est ok) ai redimensionnement d'un contrôle [ par brisky ] salut à tous,j'aimerais savoir comment redimentionner un treeview et un listview à l'exécution. comme dans l'explorateur windows, quand on se met entr popup menu dans listview ou treeview en VBA [ par reman ] Salut à tous,Je n'arrive pas à créer un popup sur un item d'une listview ou d'un treeview. Je débute, alors si quelqu'un pouvait m'aider en me donnant popup & listview ou treeview [ par reman ] please help,peut on faire des popup dans des controles treeview ou listview ? et en VBA. J'y arrive pômerci Problèmes multiples avec les listview [ par nruiz ] Bonjour a tous et bonne année :) g qq problèmes avec les listview si une ame charitable pouvait m'aider :)))1-comment mettre un des éléments en gras d DragDrop entre listview et treeview [ par David2410 ] Bonjour, J'aimerais pouvoir faire un drag and drop depuis un listview et un dossier dans un treeview. Malheureusement, je n'arrive pas à activer le tr ListVieW et TreeView [ par godlistrom ] J'aimerais avoir de l'aide pour créer un Tree View efficace en Access 97. J'ai essayer avec OCX CTREEVIEWmais je ne sais acunement travaillé avec!Pou Copie de fichiers (drag drop) d'un listview vers un treeview [ par xiya ] Comment effectuer les fonctions de copier coller (répertoires et fichiers) comme sous l'explorateur de windows avec un treeview et un listview.? Merci


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,234 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales