我有一个 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/