delphi - 尽管使用执行发送消息, TreeView 中的项目高度不会改变

标签 delphi treeview height

我有一个 TreeView 作为主菜单。程序启动后,我添加新的子项目。

然后我执行 TreeView1.Perform(TVM_SETITEMHEIGHT, 28, 0);

在设计时,我将表单的 Position 属性设置为 poDesigned。如果我在运行时执行 Position := poScreenCenter; ,为什么 TreeView1.Perform 不起作用?

这是我的代码:

procedure TForm1.FormCreate(Sender: TObject);
begin
  TreeView1.Items.AddChild(TreeView1.Items.Item[0],'Sub Menu1');
  TreeView1.Items.AddChild(TreeView1.Items.Item[0],'Sub Menu2');
  TreeView1.Items.AddChild(TreeView1.Items.Item[0],'Sub Menu3');
  TreeView1.Items.AddChild(TreeView1.Items.Item[0],'Sub Menu4');
  TreeView1.Perform(TVM_SETITEMHEIGHT, 28, 0);
  Position:=poScreenCenter;
end;

最佳答案

NGLN 的回答给出了问题的解释。

如果您只需要在设置高度的同时设置Position(或表单的任何其他属性,该属性将导致重新创建窗口(在技术意义上)) TreeView 项目,你可以做

procedure TForm1.FormCreate(Sender: TObject);
begin
  Position := poDesigned;
  TreeView1.HandleNeeded;
  TreeView1.Perform(TVM_SETITEMHEIGHT, 28, 0);
end;

关于delphi - 尽管使用执行发送消息, TreeView 中的项目高度不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6632337/

相关文章:

c# - 从对象填充 TreeView

c# - TreeView 中的多项选择

JavaScript - 获取浏览器高度

html - child 高度 100% 没有设置 parent 固定高度

android - 火猴 XE6 :How to use the full resolution on my adroiddevice?

delphi - ProcessMessages 和应用程序的使用

forms - 如何使表单像屏幕一样 float 在工作区中(移动、调整大小、最大化、最小化)?

适用于高 DPI Windows 的 Delphi Firemonkey Scale

java - 如何在 TreeViewer 中选择特定节点?

css - 相同高度的列,内部有响应图像