Ich habe ein recht seltsames Problem.
In einem TVirtualView füge ich nach und nach Einträge mit unterschiedlichen Icons hinzu.
Es gibt nur 2 Ebenen.
Einträge auf der 0. Ebene kriegen stets das selbe Icons.
Die Einträge der 1. Ebene haben stets ein eigenes.
In der Imagelist ist das 1. Icon deswegen das für die der ersten und alle anderen folgen darauf.
Wenn ich auf einen Eintrag klicke wird dessen Icon in einem Speed-Button angezeigt.
Sobald ich mehr als 3 Einträge in der 1. Ebene habe zeigt er in dem Treeview statt des 4. Icons, das allererste an.
Komischerweise wird im Speed-Button das richtige Bild der Image-Liste angezeigt.
Ich habe auch meine OnGetImageIndex-Funktion im Debugger durchlaufen.
Dort wird auch ImageIndex der korrekte Wert mitgegeben.
Hier noch die OnGetImageIndex-Funktion:
Delphi-Quellcode:
procedure TForm1.VSTGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean;var ImageIndex: Integer);
var
Data: PTreeData;
begin
if (Column=0) then
begin
if (Sender.GetNodeLevel(Node)=0) then
begin
ImageIndex:=0;
end
else
begin
Data:=VST.GetNodeData(Node);
ImageIndex:=Data^.ImageIndex;
end;
end;
end;