update:
ich schaffe es mittlerweile nodes aus einer dateiliste hinzuzufügen, diese korrekt und farblich darzustellen.
das funktioniert alles wunderbar und schnell.
doch wenn ich GetImageIndex verwende ist die VST sehr sehr träge und langsam. zudem werden nicht alle icons angezeigt.
die systemicons hole ich so:
Delphi-Quellcode:
// private deklariert
hImgSm: HIMAGELIST;
aFileIcon: TSHFileInfo;
// ...
// OnCreate:
hImgSm := HIMAGELIST(SHGetFileInfo('', 0, aFileIcon, SizeOf(aFileIcon), SHGFI_SYSICONINDEX or SHGFI_ICON));
if (hImgSm <> 0) then
ImageList1.Handle := hImgSm;
ImageList1.ShareImages := True;
VST.Images := ImageList1;
// ...
procedure TForm1.VSTGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind;
Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: integer);
var
Data: PTreeData;
begin
Data := VST.GetNodeData(Node);
begin
ZeroMemory(@aFileIcon, SizeOf(aFileIcon));
if SHGetFileInfo(PChar(Data.sFileName), 0, aFileIcon, SizeOf(aFileIcon), SHGFI_SYSICONINDEX or SHGFI_ICON) <> 0
then
begin
ImageIndex := aFileIcon.iIcon;
end;
end;
end;
komischerweise sind auch nur 7 icons in der ImageList zu anfang.