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

Signaler
Messages postés
16
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
27 octobre 2011
-
Messages postés
25
Date d'inscription
jeudi 3 août 2006
Statut
Membre
Dernière intervention
21 avril 2011
-
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!

9 réponses

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

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

Bon dev,
Messages postés
25
Date d'inscription
jeudi 3 août 2006
Statut
Membre
Dernière intervention
21 avril 2011
1
 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 !
Messages postés
16
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
27 octobre 2011

Merci infiniment pour ta réponse.

WSTBoss!
Messages postés
25
Date d'inscription
jeudi 3 août 2006
Statut
Membre
Dernière intervention
21 avril 2011
1
scuze, retire le Data^.Changed := False ;   sinon, il ne te prendra pas le changement de statut .. ;-)
Messages postés
25
Date d'inscription
jeudi 3 août 2006
Statut
Membre
Dernière intervention
21 avril 2011
1
que bien sur tu remplaces par Data^.Changed := Arecord.Fchanged ;
Messages postés
16
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
27 octobre 2011

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!
Messages postés
25
Date d'inscription
jeudi 3 août 2006
Statut
Membre
Dernière intervention
21 avril 2011
1
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, @++
Messages postés
16
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
27 octobre 2011

ah c'étais la question piège du jour. Tant pis c'est pas grave.
encore merci pour tout...

WSTBoss!
Messages postés
25
Date d'inscription
jeudi 3 août 2006
Statut
Membre
Dernière intervention
21 avril 2011
1
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 ....