Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/04/2011, 19h52   #1
Futur Membre du Club
 
Inscription : juillet 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 57
Points : 19
Points : 19
Par défaut Problème d'affichage d'un treeview

Bonjour à tous,

Le contexte :
A partir d'un formulaire de type liste de clients, par un double-clic sur une ligne correspondant à un client j'accède à un formulaire de type page détaillant toutes les caractéristiques de ce client. Parmi ces caractéristiques, j'affiche sous forme d'un treeview l'arborescence des produits par catégories qu'il peut acheter. ce qui me permet de les sélectionner à loisir pour les lui rattacher.
Dans le formulaire liste j'ai aussi un bouton qui me permet de créer un nouveau client par affichage du formulaire de type page de détail.
J'ai aussi des boutons de navigation entre clients dans ce formulaire de type page de détail.

Mon problème :
- Lorsque je double-clic sur le premier client de la liste ou que je crée un nouveau client sa page de détail s'ouvre et affiche sans problème le treeview.
- Par contre lorsque je double-clic sur un client qui n'est pas le premier de la liste, sa page de détail s'ouvre elle, sans problèmes et affiche les caractéristiques du client MAIS alors le treeview ne s'affiche pas !
- Si à l'aide de mes boutons de navigation je passe à un autre client le treeview s'affiche et si je reviens sur le client initial le treeview s'affiche correctement.
C'est à ne rien y comprendre, et je tourne en rond aussi j'en appelle à votre aimable aide.

Mes questions :
1 - Quelqu'un a-t-il une idée pour corriger ce problème d'affichage ? Y-a-t-il une (ou des) instruction(s) particulière(s) à rajouter ?

2 - Je ne vois pas comment détecter un clic sur une ligne du treeview pour déclencher une action de traitement (sur entrée et sur réception focus ne marchent que la première fois, un second clic ne déclenche plus ces évènements sauf à sortir du treeview et y revenir ce qui n'est pas top !).

MERCI d'avance de vos réponses avisées.
Cordialement
oracle7556
oracle7556 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2011, 21h59   #2
Membre éclairé
 
Homme Christophe AUMOITTE
Inscription : octobre 2009
Messages : 254
Détails du profil
Informations personnelles :
Nom : Homme Christophe AUMOITTE
Âge : 43
Localisation : France, Bas Rhin (Alsace)

Informations forums :
Inscription : octobre 2009
Messages : 254
Points : 303
Points : 303
Bonsoir,

Je pense que tu as un problème d'actualisation des données dans ton formulaire qui contient le Treeview.
Le code pour le click dans un Treeview est :

Code :
Sub TV1_NodeClick(ByVal node As Object)

Supposant que ton Treeview s'appelle TV1.

Cordialement

Christophe
marsouin_89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2011, 22h31   #3
Futur Membre du Club
 
Inscription : juillet 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 57
Points : 19
Points : 19
Bonsoir,

@ marsouin_89
Merci de votre réponse.

En fouillant l'explorateur d'objets (F2) sur Treeview j'ai bien vu cet évènement 'TV1_NodeClick(...)' mais je ne comprend pas trop comment l'utiliser. Pouvez-vous préciser SVP ?
Car à priori il faut lui passer la référence d'un nœud précis et comment connaitre ce nœud suite au clic sur une ligne ? est-ce bien avec TV1.Nodes(KeyLigneSelect).Selected ?
Donc qq chose du style :
Code :
TV1_NodesClick(TV1.Nodes(KeyLigneSelect).Selected)
J'ai aussi trouvé l'évènement 'TV1_Click()' mais malheureusement il s'applique à TOUS les clics dans l'objet Treeview quelque soit la zone : càd sur une ligne de l'arbre ou en dehors mais toujours en restant à l'intérieur de l'objet Treeview.
De plus il prend le pas sur l'autre évènement 'TV1_DblClick()' en intervenant avant ce qui fait que le 'TV1_Click()' est toujours exécuté AVANT le 2xClic que j'utilise pour replier une branche de l'arbre. Donc il n'est pas possible de faire la différence entre les deux : simple et double click s'entend.

Citation:
Je pense que tu as un problème d'actualisation des données dans ton formulaire qui contient le Treeview.
Pourquoi pas mais, toutes les autres données s'affichent correctement. Il n'y a que le Treeview qui refuse de s'afficher et uniquement dans un cas précis comme je l'ai décrit dans mon post initial.

Je continue mes recherches
A+
Cordialement
oracle7556
oracle7556 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 22h06   #4
Membre éclairé
 
Homme Christophe AUMOITTE
Inscription : octobre 2009
Messages : 254
Détails du profil
Informations personnelles :
Nom : Homme Christophe AUMOITTE
Âge : 43
Localisation : France, Bas Rhin (Alsace)

Informations forums :
Inscription : octobre 2009
Messages : 254
Points : 303
Points : 303
Bonsoir,

NodeClick fonctionne uniquement lorsque l'on clic sur un noeud.
Il n'y a pas de variable à définir c'est comme un code de bouton classique.
N'oublie pas que c'est un contrôle Activex, c'est un peu différent des outils proposés par défaut dans Access.

Pour test, colle ceci dans le module du formulaire :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub TV1_NodeClick(ByVal Node as Object)
Dim Trwarbo As TreeView
Set Trwarbo=Me.TV1.Object
 
Select Case Trwarbo.SelectedItem.text
Case "Le nom d'un de tes noeuds"
Msgbox "Vous avez cliquer sur le noeud : " & Trwarbo.SelectedItem.text
Case Else
Exit Sub
End Select
 
End Sub
Magique

Concernant ton affaire de double clic :
J'ai eu également ce problème. Cela dû à la vitesse de réception de ta souris.
Donc, ce que je conseille, et afin de ne pas obliger tes utilisateurs à modifier les paramètres de leur souris, c'est d'utiliser le bouton droit à la place.

Code :
1
2
3
4
5
6
7
8
9
Private Sub TV1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Long, ByVal Y As Long)
 
Dim Trwarbo As TreeView
Set Trwarbo=Me.TV1.Object
 
If Button = 2 Then 'Si bouton droit
    Msgbox "Le bouton droit est sur : " & Trwarbo.SelectedItem.text
End If
End Sub

Si je ne me trompe, c'est Loufab qui avait un truc très bien sur le Treeview et je crois que c'est avec son exemple que j'ai appris à gérer le treeview.

Cordialement

Christophe
marsouin_89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 08h00   #5
Futur Membre du Club
 
Inscription : juillet 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 57
Points : 19
Points : 19
Bonjour,


@ marsouin_89
Merci de ces éléments de réponse qui vont me permettre de résoudre mes interrogations.
C'est une excellente base de départ que je vais adapter à mon besoin spécifique. Je vais tester tout cela et l'astuce du clic droit m'ouvre d'autres perspectives très intéressantes. Super astuce

Pour ce qui est du problème d'affichage du treeview, j'ai trouvé. En fait je n'exécutais pas dans le bon évènement ('on open' au lieu de 'on load') pour me positionner sur l'enregistrement 2xcliqué. Le déplacement du code fait, cela marche maintenant.

Merci encore de votre aide.
Je considère le post comme résolu.

Cordialement
A+
oracle7556
oracle7556 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h52.


 
 
 
 
Partenaires

Hébergement Web