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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

VirtualTreeview


Sujet :

Delphi

  1. #1
    Membre du Club Avatar de Morfus
    Inscrit en
    Novembre 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 93
    Points : 58
    Points
    58
    Par défaut VirtualTreeview
    Comment utiliser le composant virtualtreeview

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 292
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 292
    Points : 1 944
    Points
    1 944
    Par défaut
    En regardant les exemples:

    http://www.delphi-gems.com/Downloads.php

  3. #3
    Membre habitué
    Inscrit en
    Août 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Août 2002
    Messages : 144
    Points : 157
    Points
    157
    Par défaut
    L'utilisation d'un virtualtreeview est assez complexe, mais tres puissante. Le principe quand à lui est simple, à chaque noeud on associe le pointeur d'un objet. Ensuite au moment de l'affichage de chaque celulles, on traite les valeurs à afficher. Par exemple, on veut afficher une liste de voitures...Il faut donc créer et definir un object tVoiture.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    TTypeVoiture = (tvBerline, tvCoupe, tvBreak, tvMonospace);
     
    TVoiture = class
     fMarque : string;
     fModele : string;
     fAnnee : tDate;
     fTypeVoiture : tTypeVoiture;
    end;
    ensuite dans un evenement quelconque, par exemple lorsqu'on clique sur le bouton1, on affiche une liste de voiture.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    tForm1.Onbutton1Click(Sender : tObject);
    var
     NouvelleVoiture : tVoiture;
    begin
     //On vide le treeview
     VirtualTreeview1.clear;
     //On lui indique la taille de l'objet qui doit stocker
     VirtualTreeview1.NodeDataSize := SizeOf(tVoiture);
     
    //On crée et défini le nouvel objet
     NouvelleVoiture := tVoiture.Create;
     NouvelleVoiture.fMarque := 'Opel';
     NouvelleVoiture.fModele := 'Astra';
     NouvelleVoiture.fAnnee := Now;
     NouvelleVoiture.fTypeVoiture := tvCoupe;
     //On ajoute l'objet à la liste 
     VirtualTreeview1.AddChild(nil,NouvelleVoiture);
     
     NouvelleVoiture := tVoiture.Create;
     NouvelleVoiture.fMarque := 'Volkswagen';
     NouvelleVoiture.fModele := 'Golf';
     NouvelleVoiture.fAnnee := Now;
     NouvelleVoiture.fTypeVoiture := tvCoupe;
     //On ajoute l'objet à la liste 
     VirtualTreeview1.AddChild(nil,NouvelleVoiture);
    end;
     
     NouvelleVoiture := tVoiture.Create;
     NouvelleVoiture.fMarque := 'Ford';
     NouvelleVoiture.fModele := 'Focus';
     NouvelleVoiture.fAnnee := Now;
     NouvelleVoiture.fTypeVoiture := tvCoupe;
     //On ajoute l'objet à la liste 
     VirtualTreeview1.AddChild(nil,NouvelleVoiture);
     
    //Et ainsi de suite...
    Jusqu'ici nous n'avons que rempli la liste, mais pas géré l'affichage des zones, il faut donc aller dans le gestionnaire d'evenements du virtualtreeview, plus exactement dans le onGetText. Attention, pour pouvoir afficher plusieurs colonnes, il faut aller en ajouter dans la propriete "Header" du virtualtreeview. Dans notre cas, nous allons en créer 4. Ensuite, code l'evenement suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    procedure Tform1.VirtualTreeview1GetText(
      Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex;
      TextType: TVSTTextType; var CellText: WideString);
    var
     //On indique que nous allons recuperer l'adresse du pointeur
      Voiture: ^tVoiture;
    begin
     //On alloue la valeur au pointeur
      Voiture:= Sender.GetNodeData(Node);
      Case Column of
     //On gere l'affichage suivant les critere que nous voulons (ici la colonne)
        0: CellText := Voiture.fMarque;
        1: CellText := Voiture.fModele;
        2: CellText := DateTimeToStr(voiture.date);
      end;
    end;
    Voila, j'espere que je t'aurais un peu aidé...

  4. #4
    Membre du Club Avatar de Morfus
    Inscrit en
    Novembre 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 93
    Points : 58
    Points
    58
    Par défaut
    moi ce que je veux afficher une arborescence des données d'une base de données
    je sais pas cmt faire
    merci pour votre aide

Discussions similaires

  1. Filtrer un VirtualTreeView??
    Par Ben_Le_Cool dans le forum Composants VCL
    Réponses: 2
    Dernier message: 06/03/2006, 14h07
  2. Virtualtreeview
    Par morinxav dans le forum Composants VCL
    Réponses: 6
    Dernier message: 30/01/2006, 22h03
  3. virtualtreeView+Database
    Par nodel dans le forum Bases de données
    Réponses: 3
    Dernier message: 21/01/2006, 19h28
  4. Remplir un VirtualTreeView
    Par Benjy dans le forum C++Builder
    Réponses: 3
    Dernier message: 11/07/2005, 18h16
  5. Pb installation VirtualTreeView
    Par Benjy dans le forum C++Builder
    Réponses: 1
    Dernier message: 11/07/2005, 00h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo