加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 在虚拟树视图中为每个项目组创建一个带有标题栏的主

发布时间:2020-12-15 09:50:53 所属栏目:大数据 来源:网络整理
导读:我试图从TVirtualStringTree得到一个看起来像这样的结果: 我相信它既可以直接使用TVirtualStringTree(Mike Lischke的主要Virtual Treeview控件),也可以通过继承它并修改继承的控件,或者转到TVirtualDrawTree. 这是我能得到的,并显示了我面临的问题: 我遇到
我试图从TVirtualStringTree得到一个看起来像这样的结果:

我相信它既可以直接使用TVirtualStringTree(Mike Lischke的主要Virtual Treeview控件),也可以通过继承它并修改继承的控件,或者转到TVirtualDrawTree.

这是我能得到的,并显示了我面临的问题:

我遇到的问题是我似乎无法让第0列的文本占据虚拟树视图控件的整个水平区域.高级演示中有一个虚拟树视图演示,显示多线文本似乎可以满足我的需要,但我无法弄清楚如何将它与标题行下方需要的详细列结合使用(显示为Node,节点,图片中的节点).

这是我尝试过的:

>在BeforeCellPaint事件中修改ContentRect.Right:
>在TreeOptions.MiscOptions中设置toGridExtensions.

这是一个代码示例,显示了我如何尝试更改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;

更新:

使用下面接受的答案,我得到以下内容:

解决方法

我想你想使用toAutoSpanColumns选项(在TreeOptions.AutoOptions中),可能使用OnGetCellIsEmpty事件(如果只返回第一列的文本,则不需要).

要使多线节点使用ivsMultiline状态(在OnInitNode事件中)启动它们,或者设置vtree.MultiLine [Node]:= boolean;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读