我试图从 TVirtualStringTree 中得到一个看起来像这样的结果:
我相信可以直接使用TVirtualStringTree
(Mike Lischke 的主 Virtual Treeview 控件),或者通过子类化并修改继承的控件,或者转到TVirtualDrawTree
.
这是我能得到的,并显示了我面临的问题:
我遇到的问题是我似乎无法让第 0 列的文本占据虚拟树视图控件的整个水平区域。高级演示中有一个虚拟树视图演示,显示多行文本似乎可以满足我的需要,但我无法弄清楚如何将它与我需要的标题行下方的详细信息列结合使用(显示为节点,节点,图中的节点)。
这是我尝试过的:
- 在 BeforeCellPaint 事件中修改 ContentRect.Right:
- 设置
toGridExtensions
在TreeOptions.MiscOptions
.
这是一个代码示例,显示了我如何尝试更改 contentRect:
procedure TForm1.VirtualStringTree1BeforeCellPaint(Sender: TBaseVirtualTree;
TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
CellPaintMode: TVTCellPaintMode; CellRect: TRect; var ContentRect: TRect);
var
level:Integer;
begin
level := VirtualStringTree1.GetNodeLevel(Node);
if (level=0) then
Inc( ContentRect.Right, 300);
end;
更新:
使用下面接受的答案,我得到以下信息: