Lors du dessin du composant, le TVirtualTree se sert de l'evenement OnGetText
pour recuperer le texte a afficher.
procedure TForm1.VSTMainGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: String); var pData: PTreeData; begin pData := VST.GetNodeData(Node); case Column of 0: CellText:= IntToStr(pData^.id); 1: CellText:= IntToStr(pData^.Flags); 2: CellText:= IntToStr(pData^.Current); 3: CellText:= IntToStr(pData^.Worst); end; end;
On peut mettre deux images avant le texte du noeud.
TImageList
sera stocké dans la property images
et la largeur définie dans la propety imagesWidth
.TImageList
sera stocké dans la property StateImages
et la largeur définie dans la propety StateImagesWidth
.
Lorsque le VST veux récupérer l'index de l'image à afficher, le paramètre Kind
contient l'information du type d'image qu'il souhaite:
ikNormal
: L'image “Normale”ikSelected
: L'image “Normale” quand la ligne est séléctionnéeikState
: L'image “State”ikOverlay
: …..
Le paramètre Column
contient l'index de la colonne pour laquelle il veut l'ImageIndex.
procedure TFrameVSTDisks.VSTGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: boolean; var ImageIndex: integer); var pData: PTreeData; begin pData := VST.GetNodeData(Node); ImageIndex := -1; case Column of C_COL_DEVICE: case Kind of ikState: ImageIndex := -1; ikNormal,ikSelected: ImageIndex := pData^.Img; end; C_COL_SMART: case Kind of ikState: ImageIndex := -1; ikNormal,ikSelected: ImageIndex := pData^.SmartImg; end; end; end;