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