扩展节点时如何更改TVirtualStringTree节点图标

时间:2018-08-25 09:00:23

标签: delphi virtualtreeview tvirtualstringtree

这听起来像一个愚蠢的问题,但是我尝试了所有我能想到的事情,但没有成功。扩展节点后,如何更改VirtualStringTree节点的图标图像。即,当Node折叠时,我想显示一个关闭的文件夹图标,当它展开时,我想显示一个打开的文件夹图标。

在GetImageIndex中,我看不到如何判断节点是否扩展。 Kind只会告诉我何时选中它。

2 个答案:

答案 0 :(得分:2)

TBaseVirtualTree具有Expanded属性,用于检查给定节点是否扩展:

procedure TForm1.VTGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
          Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer);
begin
  if Sender.Expanded[Node] then begin
     ...
  end;
end;

答案 1 :(得分:1)

Node: PVirtualNode;事件的OnGetImageIndex()参数可以通过它的States属性告诉您是否扩展。

procedure TForm1.VSTGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: TImageIndex);
begin
  if vsExpanded in Node.States then
    // select image as needed
  ...
end;

背景:

从来源(单位VirtualTrees

TVirtualNodeState = (
  ...
  vsExpanded,          // Set if the node is expanded.
  ...
);