如何调整Delphi TreeView节点高度,实现节点内绘制三行文本?
- 内容介绍
- 文章标签
- 相关推荐
本文共计388个文字,预计阅读时间需要2分钟。
我将D7与TreeView(非VirtualTreeView)一起使用。如何修改节点高度以使用OwnerDraw并在节点矩形中绘制3(或更多)文本行?
因此,树应看起来如下(根节点2个节点,aaa和bbb):[ ][ +Roo ]
我将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树视图类,但我会将此保留在您身上.
本文共计388个文字,预计阅读时间需要2分钟。
我将D7与TreeView(非VirtualTreeView)一起使用。如何修改节点高度以使用OwnerDraw并在节点矩形中绘制3(或更多)文本行?
因此,树应看起来如下(根节点2个节点,aaa和bbb):[ ][ +Roo ]
我将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树视图类,但我会将此保留在您身上.

