Bonjour, j'espère que certains ici connaissent le composant de Soft Gems (VirtualTreeView).
J'essaie de l'utiliser pour la première fois sour C++ Builder 6.
Ma première tâche simple est de rajouter des lignes (nodes) dans mon VirtualTreeView avec si possible les différentes valeurs sous les colonnes (Header). Malheureusement je n'ai à disposition que des démos pour Delphi et je peine à traduire le tout pour C++ Builder.
Tout d'abord j'ai traduit le Record de Delphi nécessaire au stockage des données par cette déclaration:
puis j'ai vu dans la démo qu'il fallait fournir à l'arbre les moyens de gérer/rafraîchir l'affichage des valeurs à partir des données de mon struct à travers les procédures InitNode et Get Text dont voila les versions Delphi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 struct TreeData { String Caption; }; TreeData *DataTree;
et
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 procedure TMainForm.VSTInitNode(Sender: TBaseVirtualTree; ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates); var Data: PMyRec; begin with Sender do begin Data := GetNodeData(Node); // Construct a node caption. This event is triggered once for each node but // appears asynchronously, which means when the node is displayed not when it is added. Data.Caption := Format('Level %d, Index %d', [GetNodeLevel(Node), Node.Index]); end; end;
Que j'ai traduit (pour le début) en C++ Builder par:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 procedure TMainForm.VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var Text: WideString); var Data: PMyRec; begin // A handler for the OnGetText event is always needed as it provides the tree with the string data to display. // Note that we are always using WideString. Data := Sender.GetNodeData(Node); if Assigned(Data) then Text := Data.Caption; end;
Mais je chope une erreur à la compilation:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void __fastcall TForm3::VSTInitNode(TBaseVirtualTree *Sender, PVirtualNode ParentNode, PVirtualNode Node, TVirtualNodeInitStates &InitialStates) { TreeData *Data; Data=Sender->GetNodeData(Node); }Et effectivement il est logique que la fonction GetNodeData ne renvoyant qu'un pointeur vide, je ne puisse remplir mes données avec ! Mais comment Delphi fait-il pour que celà fonctionne ?[C++ Erreur] Unit3.cpp(245): E2034 Impossible de convertir 'void *' en 'TreeData *'
Quelqu'un a une idée ?
Partager