Pro*_*020 4 delphi treeview delphi-7
我将D7与TreeView(不是VirtualTreeView)一起使用.如何更改节点高度以使用OwnerDraw并在节点矩形中绘制3(或5个或更多)"文本"行?
所以树应该看起来像这样(根节点+ 2节点显示,aaa和bbb):
[+] Root node
|
| [aaa1
|--[aaa2222
| [aaa333
|
| [bbb1
|--[bbb2222
| [bbb333
|
...
Run Code Online (Sandbox Code Playgroud)
我知道如何使用所有者绘制.但不知道如何制作高节点矩形.
最简单的方法是在树视图中添加节点时设置节点高度.这样可以避免修改原始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;
Run Code Online (Sandbox Code Playgroud)
并且将节点设置为默认节点高度的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;
Run Code Online (Sandbox Code Playgroud)
当然,您可以使用这样的代码扩展原始VCL树视图类,但我会将此保留在您身上.
| 归档时间: |
|
| 查看次数: |
1835 次 |
| 最近记录: |