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

标签 delphi treeview delphi-7

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

因此树应如下所示(显示根节点 + 2 个节点,aaa 和 bbb):

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

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

最佳答案

最简单的方法是当节点已添加到 TreeView 中时设置节点高度。这将使您无需修改​​原始的 VCL 控制代码。您需要做的是设置 TVITEMEXiIntegral 成员结构体,表示默认节点高度的倍数。如果您需要以像素为单位设置此高度,则必须通过发送 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/

相关文章:

c# - 在滚动条上的 WPF TreeView 中拖放

delphi - 使用getopt.pas的示例

delphi - 输入框中的取消按钮未关闭

delphi - zlib目录(保存路径)

delphi - Spring4D中如何使用多接口(interface)类

delphi - 关闭并重新启动DELPHI中的当前应用程序

delphi - 在边缘上方/附近拖动时滚动 TTreeView

css - 如何将 css 应用于 ivh-treeview 中的特定选定子项?

json - Http获取json转化为字符串

delphi - 如何在delphi中使用teechart从数据集中制作堆积条形图