VitualStringTree & Node partageant les même data

Résolu
WSTBoss Messages postés 16 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 27 octobre 2011 - 17 déc. 2007 à 15:26
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!

9 réponses

Malonesystems Messages postés 25 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 21 avril 2011 1
17 déc. 2007 à 16:28
Slt,

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

Bon dev,
3
Malonesystems Messages postés 25 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 21 avril 2011 1
17 déc. 2007 à 17:13
 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 !
3
WSTBoss Messages postés 16 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 27 octobre 2011
17 déc. 2007 à 17:06
Merci infiniment pour ta réponse.

WSTBoss!
0
Malonesystems Messages postés 25 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 21 avril 2011 1
17 déc. 2007 à 17:22
scuze, retire le Data^.Changed := False ;   sinon, il ne te prendra pas le changement de statut .. ;-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Malonesystems Messages postés 25 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 21 avril 2011 1
17 déc. 2007 à 17:25
que bien sur tu remplaces par Data^.Changed := Arecord.Fchanged ;
0
WSTBoss Messages postés 16 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 27 octobre 2011
17 déc. 2007 à 17:29
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!
0
Malonesystems Messages postés 25 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 21 avril 2011 1
17 déc. 2007 à 17:38
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, @++
0
WSTBoss Messages postés 16 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 27 octobre 2011
17 déc. 2007 à 17:42
ah c'étais la question piège du jour. Tant pis c'est pas grave.
encore merci pour tout...

WSTBoss!
0
Malonesystems Messages postés 25 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 21 avril 2011 1
17 déc. 2007 à 17:49
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 ....
0
Rejoignez-nous