add small icon to virtualtreeview

后端 未结 1 1184
囚心锁ツ
囚心锁ツ 2021-01-15 19:36

i am trying to add small icon to VirtualTreeview in delphi2010 i have ImageList attached to VirtualTreeview using the property images

procedure TMainFrm.VSTG         


        
相关标签:
1条回答
  • 2021-01-15 19:51

    Let's have an image list ImageList1 and assign it to VirtualStringTree1.Images property. Then joining to the previous commenters, before you use FileInfo, assign something to it, like: FileInfo := Sender.GetNodeData(Node), than you can use FileInfo.FileIco. But you should add your icon to the imagelist not in the OnGetImageIndex. You should do it in OnInitNode (if you follow the virtual paradigm, what you should do), than store the index of the added icon in FileInfo. example:

    procedure TForm1.VirtualStringTree1InitNode(Sender: TBaseVirtualTree;
      ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
    var
      FileInfo: PFileInfoRec;
    begin
      FileInfo := Sender.GetNodeData(Node);
      //...
      FileInfo.FileIcoIndex := ImageList1.AddIcon(FileInfo.FileIco);
    
    end;
    

    than in onGetImageIndex:

    procedure TMainFrm.VSTGetImageIndex(Sender: TBaseVirtualTree;
      Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex;
      var Ghosted: Boolean; var ImageIndex: Integer);
    var
      FileInfo: PFileInfoRec;
    begin
      FileInfo := Sender.GetNodeData(Node);
      if Kind in [ikNormal , ikSelected] then
      begin
        if Column = 0 then
        ImageIndex :=FileInfo.FileIcoIndex;
      end;
    end;
    

    If it's not adequate, please post more sample code, to enlighten us about your problem.

    0 讨论(0)
提交回复
热议问题