Bonjour à tous,
voici mon probleme, j'ai un VirtualTreeView nommé vtSearchs sur lequel j'ai apporté ma petite touche perso sur le OnDrawNode. SearchClass contient quelques propriétés, et SearchList contient des SearchClass
Mais voilà alors que dans la proc UpdateVTSearchs ma variable SC existe bien (SC.Source est accessible, SC.Title aussi) je me retrouve avec le message La valeur de Node n'est pas utilisé dans la fonction UpdateVTSearchs.
J'ai la même chose sur un autre prog et là je n'ai pas ce message.
Le programme me plante une erreur sur la ligne :
0: DrawText(Canvas, R, taLeftJustify, tlCenter, SC.Source);
avec une violation d'access, SC n'est pas defini.
Normalement, il devrait connaitre le Node mais là rien et pourtant dans mon autre prog cela fonctionne parfaitement et pas de message comme quoi la valeur de Node n'est pas utilisé.
Une idée ? peut etre une chose à checker dans les options du projet ?
Note : biensur ce qu'une partie de mon prog, j'initialise bien valeur et d'ailleurs
comme je le dis plus haut dans ce texte, SC.Source existe bien et j'ai la bonne valeur.
Note : si je remplace SC.Source par un texte du style 'Toto' cela fonctionne bien (dans 0: DrawText(Canvas, R, taLeftJustify, tlCenter, SC.Source); )
Merci à tous pour votre aide.
Bruno
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 procedure TMain.UpdateVTSearchs; var i : integer; Node: PVirtualNode; SC: TSearchClass; SL: TSearchList; begin SL:=TSearchList.Create; try SL := FData.Searchs; vtSearchs.NodeDataSize:=SizeOf(Pointer); vtSearchs.BeginUpdate; try vtSearchs.Clear; for i:=0 to SL.Count-1 do begin SC:=SL[i]; Node:=vtSearchs.AddChild(nil, SC); end; finally vtSearchs.EndUpdate; end; finally SL.Free; end; end; procedure TMain.vtSearchsDrawNode(Sender: TBaseVirtualTree; const PaintInfo: TVTPaintInfo); var SC : TSearchClass; R : TRect; begin with PaintInfo do begin R:=ContentRect; if Sender.Selected[Node] then Canvas.Font.Color:=clWhite else Canvas.Font.Color:=clBlack; Canvas.Brush.Style:=bsClear; SC:=GetPointerFromTree(Sender, Node); if Assigned(SC) then case Column of 0: DrawText(Canvas, R, taLeftJustify, tlCenter, SC.Source); 1: DrawText(Canvas, R, taLeftJustify, tlCenter, SC.Title); end; end; end; {* proc .vtSearchsDrawNode *} procedure TMain.Button1Click(Sender: TObject); begin UpdateVTSearchs; end;
Partager