gpt4 book ai didi

delphi - 如何克隆 TPopupMenu 的菜单项?

转载 作者:行者123 更新时间:2023-12-03 15:50:41 27 4
gpt4 key购买 nike

我想将整个 TMenuItem 及其子项克隆到另一个 TPopupMenu。这是nice code :

function CloneMenuItem(SourceItem: TMenuItem): TMenuItem;
var
I: Integer;
Begin
with SourceItem do
Begin
Result := NewItem(Caption, Shortcut, Checked, Enabled, OnClick, HelpContext, Name + 'Copy');
for I := 0 To Count - 1 do
Result.Add(CloneMenuItem(Items[I]));
end;
end;

以下工作正常(b1 是带有子菜单的 PopupMenu1.TMenuItem):

PopupMenu2.Items.Add(CloneMenuItem(b1));

问题是,如果 SourceItem 是根项,我无法克隆整个 TPopupMenu。例如:

PopupMenu2.Items.Add(CloneMenuItem(PopupMenu1.Items));

行不通。我只能看到 1 个项目,就好像它是一个分隔符。

最佳答案

您无法像这样克隆TPopupMenu.Items。尽管 TPopupMenu.Items 是一个 TMenuItem 对象,但它并不是一个实际的菜单项,它只是一个用于托管其他 TMenuItem 对象的容器。您必须循环遍历这些子项并单独克隆它们,例如:

for I := 0 to PopupMenu1.Items.Count-1 do
PopupMenu2.Items.Add(CloneMenuItem(PopupMenu1.Items[I]));

关于delphi - 如何克隆 TPopupMenu 的菜单项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10604649/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com