Hallo!
Ich ärgere mich schon eine ganze Weile mit dem VST herum. Ich möchte ein Overlay-Image über das Node-Symbol legen. Die normalen Images und die Overlays liegen in verschiedenen ImageLists, daher verwende ich OnGetImageIndexEx:
Delphi-Quellcode:
procedure TForm1.tvGridGetImageIndexEx(Sender: TBaseVirtualTree;
Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex;
var Ghosted: Boolean; var ImageIndex: TImageIndex;
var ImageList: TCustomImageList);
var
D: PDbTreeNodeData;
begin
ImageIndex:= -1;
if Column = 0 then begin
case Kind of
ikNormal, ikSelected:
begin
ImageList:= ilIcons;
D:= Sender.GetNodeData(Node);
if D <> NIL then begin
ImageIndex:= D^.Data.ImageIndex;
end;
end;
ikOverlay:
begin
ImageList:= ilOverlays;
D:= Sender.GetNodeData(Node);
if D <> NIL then begin
ImageIndex:= D^.Data.OverlayIndex;
end;
end;
end;
end;
end;
Jedoch wird kein Overlay gepinselt. Der selbe Code in OnGetImageIndex (ohne -Ex) funktioniert einwandfrei. Nur eben mit dem Unterschied, dass ich hier alle Images in eine gemeinsame Liste packen muss. Das gefällt mir aber nicht so gut.
Laut Debugger passt alles, sämtliche Zuweisungen, ImageIndizes und Imagelisten sind so wie sie sein sollen. Allerdings blicke ich im VST-Quellcode nicht wirklich durch, der ist ziemlich verworren. Darum kann ich nicht nachvollziehen, ob OnGetImageIndexEx intern anders behandelt wird als OnGetImageIndex (abgesehen von der Zuweisung der ImageList im Eventhandler)
Grüße
Cody