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

delphi – 如何更改TreeView节点高度,在节点中绘制3行

发布时间:2020-12-15 09:18:53 所属栏目:大数据 来源:网络整理
导读:我将D7与TreeView(不是VirtualTreeView)一起使用.如何更改节点高度以使用OwnerDraw并在节点矩形中绘制3(或5个或更多)“文本”行? 所以树应该看起来像这样(根节点2节点显示,aaa和bbb): [+] Root node | | [aaa1 |--[aaa2222 | [aaa333 | | [bbb1 |--[bbb222
我将D7与TreeView(不是VirtualTreeView)一起使用.如何更改节点高度以使用OwnerDraw并在节点矩形中绘制3(或5个或更多)“文本”行?

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

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

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

解决方法

最简单的方法是在树视图中添加节点时设置节点高度.这样可以避免修改原始VCL控制代码.您需要做的是设置 TVITEMEX结构的iIntegral成员,它表示默认节点高度的倍数.如果您需要以像素为单位设置此高度,则必须通过发送 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树视图类,但我会将此保留在您身上.

(编辑:李大同)

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

    推荐文章
      热点阅读