3

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

任务

传奇:

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

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

4

1 回答 1

5

这称为列跨越,是的,它可以很容易地完成 - 只需将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;
于 2013-09-03T21:01:09.727 回答