VitualStringTree & Node partageant les même data [Résolu]

Messages postés
16
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
27 octobre 2011
- - Dernière réponse : Malonesystems
Messages postés
25
Date d'inscription
jeudi 3 août 2006
Statut
Membre
Dernière intervention
21 avril 2011
- 17 déc. 2007 à 17:49
Bonjour,

voilà j'utilise VirtualStringTree de Soft Gems et j'ai un petit soucis. J'ai en fait 2 VirtualStringTree dans mon appli et j'aimerai qu'une node de l'un pointe sur les mêmes données qu'une node de l'autre.

Type
   PNodeInfo2=               ^TNodeInfo2;   
   TNodeInfo2 = record
      OriginalTableName:          string;
      OriginalFieldName:          string;
   end;

procedure Toto(VT1:TVirtualStringTree; VT2:TVirtualStringTree);
var
  ChildNode:        PVirtualNode;
  ChildNodeInfo:    PNodeInfo2;
  NewNode:          PVirtualNode;
  NewNodeInfo:      PNodeInfo2;
begin
  ChildNode:=VT1.AddChild(nil);
  ChildNodeInfo:=VT1.GetNodeData(ChildNode);
  ChildNodeInfo.OriginalTableName:='Table1';
  ChildNodeInfo.OriginalFieldName:='Field1';


  //j'indique ici le pointeur sur les infos de ChildNode
  //afin que les 2 node pointent sur les mêmes données.
  NewNode:=VT2.AddChild(nil,ChildNodeInfo);
 
  //je vérifie si mes infos dans NewNode sont les mêmes que dans ChildNode
  NewNodeInfo:=MyVT.GetNodeData(NewNode);
  ShowMessage(NewNodeInfo.OriginalTableName);
  //mais ça plante et ça ne me donne pas mon Table1
end;

est-ce que quelqu'un à une petite idée ?
merci d'avance.

WSTBoss!
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
25
Date d'inscription
jeudi 3 août 2006
Statut
Membre
Dernière intervention
21 avril 2011
1
3
Merci
Slt,

reporte toi à l'unit VisibilityDemo de l'advanced demo fournie avec le comosant, il y à ce que tu cherches.

Bon dev,

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Malonesystems
Messages postés
25
Date d'inscription
jeudi 3 août 2006
Statut
Membre
Dernière intervention
21 avril 2011
1
3
Merci
 Type
 PTreeData = ^TTreeData ;
 TTreeData = record
 FObject : TObject ;

  Fdonnee1 : string ;
  Fdonnee2 : string ;
 Changed ; boolean ;
 end;

utilise plutot ce type de fonction pour ajouter un node (avec comme param, ton treeview, le node parent,le type de data) ->

function addVSTNode(AVST : TCustomVirtualStringTree; Anode :PVirtualNode
 ; ARecord : TreeData) : PVirtualNode ;
 var
 Data : PTreeData  ;
 begin
  Result:= AVST.addchild(ANode);
  Data:= AVST.GetNodeData(result) ;
  AVST.ValidateNode( result, false) ;

  Data^.Fdonnee1= Arecord.Fdonne1   ;
  Data^.Fdonnee2 := Arecord.Fdonnee2 ;
  Data^.Changed := False ;
  end;

Procedure ....
var...
Treedata....
...
begin
TreeData.Fdonnee1 :=  'toto' ;
TreeData.Fdonnee1 :=  'tata' ;
Changed := true ;

addVSTNode(VST1,nil,treedata) ;
addVSTNode(VST2,nil,treedata) ;
end;

là tu es sur d'ajouter les mm datas ...
Bon courage, c'est un excellent outil !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Malonesystems
Messages postés
16
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
27 octobre 2011
0
Merci
Merci infiniment pour ta réponse.

WSTBoss!
Commenter la réponse de WSTBoss
Messages postés
25
Date d'inscription
jeudi 3 août 2006
Statut
Membre
Dernière intervention
21 avril 2011
1
0
Merci
scuze, retire le Data^.Changed := False ;   sinon, il ne te prendra pas le changement de statut .. ;-)
Commenter la réponse de Malonesystems
Messages postés
25
Date d'inscription
jeudi 3 août 2006
Statut
Membre
Dernière intervention
21 avril 2011
1
0
Merci
que bien sur tu remplaces par Data^.Changed := Arecord.Fchanged ;
Commenter la réponse de Malonesystems
Messages postés
16
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
27 octobre 2011
0
Merci
Merci de tes petites précisions dont je tiendrais compte bien évidement.
En effet VST est excellent dès qu'on a compris le principe. cela fait un bon petit moment que
je l'utilise et que j'en suis content.

petit question subsidiaire pour ma culture personnelle, quelle différence y a t'il entre écrire
Data^.FDonnee1 et Data.FDonnee1 ? le ^ est il nécessaire / obligatoire.

merci

WSTBoss!
Commenter la réponse de WSTBoss
Messages postés
25
Date d'inscription
jeudi 3 août 2006
Statut
Membre
Dernière intervention
21 avril 2011
1
0
Merci
Eh bien ce sont les conventions d'écritures pour les pointeurs, et là je ne serais pas le mieux placé pour te donner 'un cours'. il y à des tutos + ou - 'pointus' sur le sujet, et fait par des gens qui en comprennent toutes les subtilités, je te suggère de t'y référer.
Par contre, si tu as des soucis sur le virtualtreeview, je pourrais ss doute t'aider ...

Bon courage, @++
Commenter la réponse de Malonesystems
Messages postés
16
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
27 octobre 2011
0
Merci
ah c'étais la question piège du jour. Tant pis c'est pas grave.
encore merci pour tout...

WSTBoss!
Commenter la réponse de WSTBoss
Messages postés
25
Date d'inscription
jeudi 3 août 2006
Statut
Membre
Dernière intervention
21 avril 2011
1
0
Merci
Pointeur vers s'écrit
en delphi ^, ce qui équivaut à * du c.
c'est l'affectation de la valeur au poiteur ...
c'est obligatoire ds le sens ou tu utilises des pointeurs, je ne sais que te dire de plus ....
Commenter la réponse de Malonesystems