Utilisation de base du composant VirtualTreeView
Date de publication : 11 janvier 2009
Par
Lelong Julien (jlelong.developpez.com)
VirtualTreeView en action.
I. Introduction
II. Principe de fonctionnement
II-A. Déclaration de la structure de données et initialisation
II-B. Remplissage de la structure
II-C. Afficher le noeud
I. Introduction
Dans ce tutoriel, je vais vous présenter le composant VirtualTreeView. Nous allons voir comment utiliser les
fonctionnalité de base de ce composant.
Avant de commencer, téléchargeons le composant
TVirtualTreeView
disponible sur le site de l'éditeur
Soft-Gems.net.
II. Principe de fonctionnement
Avant de rentrer dans le vif du sujet, il faut bien comprendre qu'un noeud est complément virtuel. Les seules données qui lui sont associées
(Nom, ImageIndex, etc.) sont contenus dans un pointeur.
Pour travailler avec le VirtualTreeView, il nous faudra tout d'abord déclarer une structure contenant les informations à
afficher, puis, une fois la structure renseignée, nous l'afficherons grâce à l'événement OnGetText prévu à cet effet.
II-A. Déclaration de la structure de données et initialisation
Dans un premier temps, nous déclarons notre structure dans la partie déclaration, juste après le uses :
|
type
PData = ^rData;
rData=record
valeur:string ;
end ;
|
Pour commencer, notre structure ne comportera qu'un seul champs. Une fois la structure déclarée, nous allons de suite
initialiser notre VirtualTreeView en affectant la propriété NodeDataSize.
Pour se faire, il existe trois possibilités :
- Mettre la valeur directement dans l'inspecteur d'objet (très très peu pratique)
- Utiliser l'événement OnGetNodeDataSize du VirtualTreeView (pas très compliqué à mettre en oeuvre)
- Affecter la taille à la propriété NodeDataSize directement à la création de la form (conseillé).
Pour ma part, j'utilise la dernière façon de faire.
|
procedure TForm1.FormCreate(Sender: TObject);
begin
VirtualStringTree1.NodeDataSize := SizeOf(PData);
end ;
|
II-B. Remplissage de la structure
Maintenant que notre structure est créée, il ne nous reste plus qu'à la remplir pour pouvoir l'afficher par la
suite. Pour ce faire, déposons un TButton sur la Form. Renommons le directement en btnAddNode et implémentons l'événement
OnClick comme suit :
|
procedure TForm1.btnAddNodeClick(Sender: TObject);
var
node:PVirtualNode;
data:PData;
begin
node:=VirtualStringTree1.AddChild(nil );
data:=VirtualStringTree1.GetNodeData(node);
data^.valeur:=' test ' ;
end ;
|
Ici, il n'est question que du remplissage de la structure, l'affichage se faisant par la suite.
Détaillons un peu ce que contient ce bout de code.
Ici, nous avons déclaré deux variables :
- node : Qui est de type PVirtualNode ce qui sera tout simplement un noeud de notre VirtualTreeView.
- data : Qui est une variable pointant sur notre structure déclarée précédemment.
Ici, la méthode AddChild prend comme paramètre nil ce qui signifie que le noeud créé sera sur le tronc si je
peux m'exprimer ainsi. Il n'aura donc aucun parent.
La méthode GetNodeData, quand à elle, prend en paramètre un pointeur qui est le noeud que nous venons de créer. C'est grâce
à cette méthode que l'on va donc pouvoir assigner les valeurs qui nous intéressent.
II-C. Afficher le noeud
Notre noeud correctement renseigné, nous pouvons l'afficher. Si vous avez testé le code précédent, vous avez
surement remarqué que notre noeud ne contient pas le texte désiré, ici test mais le texte node.
Pour que notre noeud s'affiche correctement, nous devons utiliser l'événement OnGetText qui nous permettra
d'affecter le texte au noeud. Ci dessous, le code :
|
procedure TForm1.VirtualStringTree1GetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
var CellText: string );
var
data: PData;
begin
data := VirtualStringTree1.GetNodeData(Node);
CellText := data.valeur;
end ;
|
Copyright © 2009 Julien Lelong.
Aucune reproduction, même partielle, ne peut être faite
de ce site ni de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à
trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.