第一种形式是主要形式 – 它持有TActionManager,带有标题“Action”的TAction.
Form1的主菜单将此操作和menuitem标题属性设置为“操作A”.
Form2包括Form1,还为menuitem分配操作,标题设置为“Action B”.
在设计时,一切看起来都很好 – 菜单项在Form1和Form2中被命名为“Action A”和“Action B”,并且分配了相同的操作.它在运行时也可以正常工作(对两种表单都正确处理OnExecute).
但是 – 在运行时,Form1菜单项有标题“Action A”,Form2有菜单项标题“Action”,就像操作标题一样.
我是否错误地将它们包括在内,是否可以在Form2上包含Form1以共享操作并更改标题?这是D2010 / CB2010中的错误吗?
例:
>创建Form1和Form2并将主菜单添加到两者
>将TActionManager拖放到Form1并在其中创建Action1.
>在Form1 Action1中分配菜单项,然后修改Caption(标题现在显示为粗体,表示从默认值更改)
>分配Form2中的菜单项和Action1(来自Form1 TActionManager),并更改默认标题.
>在运行时,现在Form1更改了标题(与Action1.Caption不同),并且Form2与Action1.Caption具有相同的标题,尽管标题应该是在步骤4中更改的新值.
将菜单项的Action属性设置为相同的操作.现在,菜单项的标题与操作的标题相关联,并注意它们不再存储(它们在对象检查器中看起来不是粗体).随后,将菜单项中的标题更改为独立值,并注意它们现在已存储,并且菜单项确实在设计时相应地更改.
但是在运行时,第二个menuitem的标题确实会再次跟随该动作的标题.在我看来,这不应该发生.
我没有重现的是在运行时更改它的可能性.以下按预期工作(D7在这里):
procedure TForm2.FormCreate(Sender: TObject); begin mnuAction1.Caption := 'Action B'; end;
当然你要改变菜单项的标题而不是动作的标题?