我将 D7 与 TreeView(不是 VirtualTreeView)一起使用。如何更改节点高度以使用 OwnerDraw 并在节点矩形中绘制 3(或 5 或更多)“行”文本?
因此树应如下所示(显示根节点 + 2 个节点,aaa 和 bbb):
[+] Root node
|
| [aaa1
|--[aaa2222
| [aaa333
|
| [bbb1
|--[bbb2222
| [bbb333
|
...
我知道如何使用所有者绘制。但不知道如何制作高节点矩形。
最佳答案
最简单的方法是当节点已添加到 TreeView 中时设置节点高度。这将使您无需修改原始的 VCL 控制代码。您需要做的是设置 TVITEMEX
的 iIntegral
成员结构体,表示默认节点高度的倍数。如果您需要以像素为单位设置此高度,则必须通过发送 TVM_SETITEMHEIGHT
设置默认节点高度。消息并将默认节点高度设置为 1 像素,但 TreeView 的外观会被破坏。
以下过程将 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 TreeView 类,但我会将其保留给您。
关于delphi - 如何更改 TreeView 节点高度,在节点中绘制 3 条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21001812/