如何更改TreeView节点高度,在节点中绘制3条线

 十字心死_823 发布于 2023-02-05 10:07

我将D7与TreeView(不是VirtualTreeView)一起使用.如何更改节点高度以使用OwnerDraw并在节点矩形中绘制3(或5个或更多)"文本"行?

所以树应该看起来像这样(根节点+ 2节点显示,aaa和bbb):

[+] Root node
 |
 |  [aaa1
 |--[aaa2222
 |  [aaa333
 |
 |  [bbb1
 |--[bbb2222
 |  [bbb333
 |
...

我知道如何使用所有者绘制.但不知道如何制作高节点矩形.

1 个回答
  • 最简单的方法是在树视图中添加节点时设置节点高度.这样可以避免修改原始VCL控制代码.您需要做的是设置结构的iIntegral成员TVITEMEX,它表示默认节点高度的倍数.如果您需要以像素为单位设置此高度,则必须通过发送TVM_SETITEMHEIGHT消息并将默认节点高度设置为1像素来设置默认节点高度,但树视图的外观会被破坏.

    这是一个过程,它将Node参数指定的节点设置Integral为默认节点高度的时间高度:

    procedure SetNodeHeight(Node: TTreeNode; Integral: Integer);
    var
      ItemEx: TTVItemEx;
    begin
      if not Node.Deleting then
      begin
        ItemEx.mask := TVIF_HANDLE or TVIF_INTEGRAL;
        ItemEx.hItem := Node.ItemId;
        ItemEx.iIntegral := Integral;
        TreeView_SetItem(Node.Handle, ItemEx);
      end;
    end;
    

    并且将节点设置为默认节点高度的3倍的可能用法:

    procedure TForm1.Button1Click(Sender: TObject);
    var
      Node: TTreeNode;
    begin
      Node := TreeView1.Items.AddChild(nil, 'Node 3 times higher than default');
      SetNodeHeight(Node, 3);
    end;
    

    当然,您可以使用这样的代码扩展原始VCL树视图类,但我会将此保留在您身上.

    2023-02-05 10:11 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有