首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为克隆的TMenuItem分配所有者?

如何为克隆的TMenuItem分配所有者?
EN

Stack Overflow用户
提问于 2022-06-07 11:29:59
回答 1查看 147关注 0票数 2

当我以通常的方式以编程方式创建TmenuItem时,创建的菜单项的Owner将作为参数传递到Create函数中,例如:

代码语言:javascript
复制
var NewMenuItem := TMenuItem.Create(MainMen1);

但是,当通过克隆菜单项创建菜单项时,分配其所有者属性会导致错误:

代码语言:javascript
复制
function CloneMenuItem(SourceItem: TMenuItem): TMenuItem;
begin
  with SourceItem do  
    Result := Vcl.Menus.NewItem(Caption, Shortcut, Checked, Enabled, OnClick, HelpContext, Name + 'Cloned'); 
  //Result.Owner := pmMyPopupMenu; // ERROR
end;

那么如何指定克隆TMenuItem的所有者呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-07 12:05:28

可以使用TComponent.InsertComponent方法设置所有者,如:。

代码语言:javascript
复制
function CloneMenuItem(SourceItem: TMenuItem): TMenuItem;
begin
  with SourceItem do  
    Result := Vcl.Menus.NewItem(Caption, Shortcut, Checked, Enabled, OnClick, HelpContext, Name + 'Cloned'); 
  pmMyPopupMenu.InsertComponent(Result);
  pmMyPopupMenu.Items.Add(Result);
end;

如果您查看NewItem函数在Vcl.Menus中的实现,它只需创建一个以nil为所有者的项,并设置传递的属性。没什么聪明的。在您的情况下,我更喜欢内联代码,或者在创建项时显式地设置所有者的本地函数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72530425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档