我的朋友正在使用VirtualTreeView在Delphi中工作,并遇到下一个问题: 他有两列包含第一列中每行的数据和子项。 是否可以不更改第一列宽度以设置最大子列宽度?
图例:
现在看起来如何 - 看看孩子的黑色反应。如何 - 看起来是红色矩形。
答案 0 :(得分:4)
这称为列跨越,是的,它可以很容易地完成 - 只需将TreeOptions -> AutoOptions -> toAutoSpanColumns
选项设置为True
即可。它的工作方式是,如果相邻列为空,则将当前列的标题扩展到其中。由于您只希望它适用于子列,您必须实现OnGetCellIsEmpty
事件并仅为子节点返回IsEmpty := True
,例如
procedure TForm1.VT_GetCellIsEmpty(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; var IsEmpty: Boolean);
begin
IsEmpty := (Sender.GetNodeLevel(Node) > 0);
end;