Je dois être fatigué par la chaleur , toujours est-il que j'ai un hic dans ce code , les titres s'initialisent correctement mais j'ai une double image au 3° niveau de l'arbre (en fait j'ai deux images superposées la bonne et celle d'indice 0)
au pas par pas les valeurs sont correctes
une idée de mon erreur ?
[EDIT] une piste peut-être , en fait si je mets des valeurs d'index image >=4 il me le fait et ce quelque soit le niveau
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85 type PTreeData = ^TTreeData; TTreeData = Record I : Integer; // the image index of the node RecKey : Integer; // Clé Primaire Table : Integer; Name: string ; // the identifier of the node end; ... procedure TClient.PageControl1Change(Sender: TObject); var CNode : PVirtualNode; DNode : PTreeData; procedure GetDetail(ANode : PVirtualNode); var PNode,INode : PVirtualNode; DNode : PTreeData; begin TDetails.Active:=True; while not TDetails.Eof do begin // 2° niveau if TDetails.FieldByName('N').AsInteger=0 then begin PNode:=vTree.AddChild(Anode); DNode:=vTree.GetNodeData(PNode); DNode.Name:=Format('Intervention N°%.5d du %s %s', [TDetails.FieldByName('I').asInteger, FormatDateTime('dd/mm/yy',TDetails.FieldByName('DATE_INTERVENTION').asDateTime), TDetails.FieldByName('NOM').asString]); DNode.Table:=1; DNode.I:=3; DNode.RecKey:=TDetails.FieldByName('I').asInteger; end // troisième niveau else begin // il me fait ici des doubles images // et ce , uniquement avec des valeurs d'index >=4 if not Assigned(Pnode) then PNode:=ANode; INode:=vTree.AddChild(PNode); DNode:=vTree.GetNodeData(INode); DNode.RecKey:=TDetails.FieldByName('N').asInteger; DNode.Table:=2; case TDetails.FieldByName('TYPE_DETAIL').asInteger of 0 : begin DNode.Name:=Format('M.O./Déplacements %25s %3.2f', [TDetails.FieldByName('NOM').asString, TDetails.FieldByName('MONTANT').asCurrency]); DNode.I:=4; end; 1 : begin DNode.Name:=Format('Fournitures %25s %3.2f', [TDetails.FieldByName('NOM').asString, TDetails.FieldByName('MONTANT').asCurrency]); DNode.I:=5; end; else begin DNode.Name:=Format('Autre %25s %3.2f', [TDetails.FieldByName('REF').asString, TDetails.FieldByName('MONTANT').asCurrency]); DNode.I:=6; end; end; end; TDetails.Next; end; TDetails.Active:=False; end; procedure TClient.VTreeGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer); var Data: PTreeData; begin Data:=Sender.GetNodeData(Node); ImageIndex:=Data.i; end; procedure TClient.VTreeGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: string); var Data: PTreeData; begin Data:=Sender.GetNodeData(Node); CellText:=Data.Name; end;
Partager