IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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 en 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;


            

Valid XHTML 1.1!Valid CSS!

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.