VirtualTreeView。如何修改子列宽?

时间:2013-09-03 19:40:57

标签: delphi virtualtreeview tvirtualstringtree

我的朋友正在使用VirtualTreeView在Delphi中工作,并遇到下一个问题: 他有两列包含第一列中每行的数据和子项。 是否可以不更改第一列宽度以设置最大子列宽度?

task

图例:

  • 圈子是节点
  • 矩形是文本(根节点的黑色矩形是两列)

现在看起来如何 - 看看孩子的黑色反应。如何 - 看起来是红色矩形。

1 个答案:

答案 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;