这听起来像一个愚蠢的问题,但是我尝试了所有我能想到的事情,但没有成功。扩展节点后,如何更改VirtualStringTree节点的图标图像。即,当Node折叠时,我想显示一个关闭的文件夹图标,当它展开时,我想显示一个打开的文件夹图标。
在GetImageIndex中,我看不到如何判断节点是否扩展。 Kind只会告诉我何时选中它。
答案 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.
...
);