Einzelnen Beitrag anzeigen

d7user1
(Gast)

n/a Beiträge
 
#2

AW: VirtualStringTree - Nodes hinzufügen

  Alt 23. Mär 2014, 22:47
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.
  Mit Zitat antworten Zitat