我有两个表单,我想共享一个TActionManager并分配TAction-s。
第一种形式是主要形式-它包含TActionManager,TAction,标题为"Action“。
Form1的主菜单将此操作和菜单项标题属性设置为“操作A”。Form2包括Form1,还将操作分配给菜单项,标题设置为"Action“。
在设计期间,所有看起来都很好的菜单项在Form1和Form2中被命名为"Action“和"Action”,并且分配了相同的操作。它在运行时也能正常工作(OnExecute对这两种表单都进行了适当的处理)。
但是-在运行时,Form1菜单项有标题" action“,而Form2有菜单项标题"Action”,就像动作标题一样。
我是否不正确地包含它们,是否可以在Form2上包含Form2以共享操作和更改标题?它是D2010 / CB2010中的一个bug吗?
示例:
value)
发布于 2012-05-01 21:11:45
我重复了你的问题,确实,这是奇怪的行为。除了为什么要更改菜单项标题这一显而易见的问题外,以下内容应该有效:
将两个菜单项的Action属性设置为相同的操作。现在菜单项的标题与操作的标题相链接,并注意它们不再被存储(它们在对象检查器中似乎没有粗体)。随后,将菜单项的标题更改为独立的值,并注意它们现在已被存储,并且菜单项在设计时确实发生了相应的变化。
但是在运行时,第二个菜单项的标题实际上又跟在动作的标题后面。在我看来,这不应该发生。
我没有再现的是在运行时更改它是不可能的。以下工作按预期进行(此处为D7):
procedure TForm2.FormCreate(Sender: TObject);
begin
mnuAction1.Caption := 'Action B';
end;确实,您正在更改菜单项的标题,而不是操作的标题?
发布于 2012-05-01 20:07:58
当操作链接到菜单项或操作标题更改时,TAction.Caption将重写TMenuItem.Caption。如果在窗体加载方法中更改菜单项标题,则应能够对这两种窗体具有不同的标题。
https://stackoverflow.com/questions/10403528
复制相似问题