在我的一个应用程序中,下拉菜单和弹出菜单共享一些菜单项(这些菜单项是动态构建的),因此我认为可以使用以下代码将TMenuItem
实例添加到两个菜单中:
MI := TMenuItem.Create(nil);
{ set MI action }
DropDownMenu.Add(MI);
PopupMenu.Items.Add(MI);
错误。我遇到了一个带有消息“菜单二次插入”的EMenuError
。这是合理的,所以我更改了我的代码,使用以下代码来创建两个菜单项实例:
MI := TMenuItem.Create(nil);
{ set MI action }
PopupMenu.CreateMenuItem.Assign(MI);
DropDownMenu.Add(MI);
再次错误。我收到一个EConvertError
,并显示此消息:无法将TMenuItem分配给TMenuItem。 我做错了什么吗?
TAction
。 - Andreas RejbrandTMenuItem.Assign
分配TCustomAction
的后代类,你可以在TMenuItem.AssignTo
重写方法中进行验证。 - TLamaAssign()
是用来从另一个TPersistant
派生类中复制所有属性的。这个假设是错误的吗? - iMan BiglariAssign
方法并不是魔法,它们是手动实现的,针对最重要的情况。 - Andreas RejbrandTPersistent
的子类都需要实现Assign
方法。无论如何,你现在知道该做什么了。 - David Heffernan