|
|
|||||||||||||||||||||||
| t |
Une fois le contrôle TreeView coché dans la liste des composants du projet, il devient disponible dans la boite à outils de eVB et vous pouvez à partir de ce moment le placer à volonté sur la feuille de votre choix.
Pour ajouter un noeud à votre contrôle TreeView vous devez utiliser la méthode 'Add' de la collection 'Nodes' du contrôle. Cette collection liste tous les noeuds qui doivent être gérés, l'image à utiliser et les relations Parent/Enfant entre tous les noeuds. Le prototype de cette méthode est le suivant : Function Add([Relative], [Relationship], [Key], Text As String, [Image], [SelectedImage]) As Node On se rend compte que cette méthode retourne l'objet Node qui vient d'être créé. Elle accèpte plusieurs paramètres optionnels (ceux entre crochet) et finalement, n'exige qu'un seul paramètre obligatoire, celui qui stipule le texte qui sera affiché en face du noeud. Nous allons détailler chaque paramètre de cette méthode :
Avec tous ces paramètres vous pouver ajouter un noeud à n'importe quel endroit dans le TreeView (dans l'exemple, le TreeView a pour nom Tv1) : Rem On place le noeud
"$ROOT" à la racine du contrôle Rem On place le noeud
"$CHILD1" comme enfant de "$ROOT" Rem On place le noeud
"$CHILD2" comme efant de "$ROOT"
Si vous avec un peu l'habitude de travailler avec le contrôle ListView, vous savez qu'il est très simple de récupérer un ListItem en donnant sa clé : Set wItem = LV_Essai.ListItems("LaClé") Avec le contrôle TreeView ça ne marche pas ! On ne peut récupérer un Node qu'en donnant son index car le paramètre attendu est converti en Long par le contrôle : Set wNode = Tv1.Nodes(3) Pourtant le fait de pouvoir récupérer un noeud par sa clé me semble un minimum. Il faut juste se créer une petite fonction qui prend comme paramètres le TreeView concerné et la clé à retrouver et qui retourne le Node trouvé ou Nothing si la clé ne correspond à aucun noeud : Public Function RetournerNoeud(ByVal wTV As TreeViewCtl, ByVal wKey As String) As Node
Dim i As Integer
Set RetournerNoeud = Nothing
For i = 1 To wTV.Nodes.Count
If wTV.Nodes(i).Key = wKey Then
Set RetournerNoeud = wTV.Nodes(i)
Exit For
End If
Next
End Function
Le contrôle TreeView génère des événements lorsque l'utilisateur agit sur lui. Les plus importants sont :
Cet événement est généré lorsqu'un noeud est sélectionné. Le paramètre Index indique de quel noeud il s'agit. Pour récupérer le noeud concerné dans une variable vous n'avez qu'à taper : Dim wNode as Node
Cet événement est généré lorsqu'un noeud est fermé. Un noeud qui possède des enfants peut être affiché ouvert (on voit les enfants) ou fermé (on ne les voit pas, mais un signe + devant le noeud indique l'existance des enfants). Le paramètre Index fonctionne comme pour l'événement 'NodeClick'.
Cet événement est le contraire de "Collapse". Il est généré lorsque'un noeud est déployé. Les événements Expand et Collapse peuvent être utilisés pour modifier l'image du noeud. Par exemple, lorsque le noeud est fermé, on utilise une image de dossier fermé, et lorsque le dossier est ouvert (on voit les sous dossiers par exemple), on utlise l'image d'un dossier ouvert. C'est en réagissant aux événements 'Collapse' et "Expand' que l'on peut faire celà.
La propriété 'LineStyle' du TreeView permet de changer la manière dont est dessiné l'arbre. Faites l'essai vous même, vous verrez rapidement la différence.
Il est possible de saisir directement sur le contrôle le libellé d'un noeud. Pour celà, vous devez placer la propriété 'LabelEdit' sur 'tvwAutomatic'. Dans ce mode, l'utilisateur peut, en cliquant longuement sur le libellé d'un noeud, saisir un autre libellé pour ce noeud. Lors de cette manipulation un évément "BeforeLabelEdit" est généré, ce qui permet par exemple de vérifier que cette saisie automatique est valide à ce moment (le paramètre "Cancel" passé à True permet d'annuler la saisie avant même son véritable commencement). A la fin de la saisie, lorsque l'utilisateur valide, l'événement "AfterLabelEdit" est à son tour généré (le paramètre "Cancel" permet aussi d'annuler la saisie si besoin).
Il est possible d'affecter à chaque noeud une image qui sera placée avant le libellé. Cette image est très utile car elle permet à l'utilisateur de se repérer dans l'arborescence. Pour que le TreeView soit en mesure d'afficher des images il faut le lier avec un autre contrôle, un ImageList. Ce contrôle permet de stocker des images dans une liste (les images d'un contrôle ImageList doivent toutes faire la même taille), ce qui permet ensuite de les référencer par leur index.
Vous devez ensuite placer une occurence de ce contrôle sur la même feuille que le TreeView avec lequel il doit être lié. Pour notre exemples nous allons appeler notre contrôle ImageList "IL_Images16" (IL pour ImageList). Les images gérés par ce contrôle doivent être au format 2bp, ou bmp 16 couleurs ou bmp 256 couleurs. Avant de charger les images dans le contrôle ImageList, il faut indiquer quelle est la longueur (width) et la hauteur (height) des images. Pour celà, les propriétés "ImageWidth" et "ImageHeight" doivent être utilisées. La méthode "Add" permet le chargement d'une image, en donnant comme paramètre le nom de fichier de cette image : Rem Chargement des images D1.BMP à
D3.BMP qui Il faut ensuite lier le contrôle ImageList avec le TreeView : Tv1.ImageList = IL_Images16.hImageList A partir de là, vous pouvez lors de la création d'un noeud indiquer quelle doit être son image, son image lors d'une sélection et changer ces paramètres à tout moment pendant l'exécution du programme.
N'oubliez pas que
les forums
|
||||||||||||||||||||||
|
|
|||||||||||||||||||||||
|
Copyright 2001-2004 - Tous droits réservés
|
|||||||||||||||||||||||
|
iPAQ
est un produit de COMPAQ.
|