我有 2 个表单,我想共享一个 TActionManager
并分配了 TAction
-s。
第一个表单是主表单 - 它包含 TActionManager
、TAction
以及标题“Action”。
Form1 的主菜单将此操作和菜单项标题属性设置为“操作 A”。 Form2 包含 Form1,并且还将操作分配给 menuitem,并将标题设置为“Action B”。
在设计期间,一切看起来都不错 - 菜单项在 Form1 和 Form2 中被命名为“Action A”和“Action B”,并且分配了相同的操作。它在运行时也能正常工作(两种形式的 OnExecute 都被正确处理)。
但是,在运行时,Form1 菜单项的标题为“Action A”,Form2 的菜单项标题为“Action”,就像操作标题一样。
我是否错误地包含了它们,是否可以将 Form1 包含在 Form2 上以共享操作并更改标题?这是 D2010/CB2010 中的错误吗?
示例:
- 创建 Form1 和 Form2 并向两者添加主菜单
- 将 TActionManager 拖放到 Form1 中并在其中创建 Action1。
- 在 Form1 Action1 中分配菜单项,然后修改标题(标题现在显示为粗体,表示对默认值的更改)
- 在 Form2 和 Action1 中分配菜单项(来自 Form1 TActionManager)并更改默认标题。
- 在运行时,Form1 已更改标题(与 Action1.Caption 不同),并且 Form2 具有与 Action1.Caption 相同的标题,尽管标题应为步骤 4 中更改的新值。
最佳答案
我重现了您的问题,确实,这是奇怪的行为。除了为什么要更改菜单项标题的明显问题之外,以下应该可以工作:
将两个菜单项的 Action
属性设置为相同的操作。现在,菜单项的标题已链接到操作的标题,并注意它们不再存储(它们在对象检查器中显示不是粗体)。随后,将菜单项的标题更改为独立值,并注意它们现在已被存储,并且菜单项确实在设计时相应更改。
但是在运行时,第二个菜单项的标题确实再次跟随该操作的标题。我认为这不应该发生。
我没有重现的是无法在运行时更改它。以下内容按预期工作(此处为 D7):
procedure TForm2.FormCreate(Sender: TObject);
begin
mnuAction1.Caption := 'Action B';
end;
确定要更改菜单项的标题而不是操作的标题吗?
关于delphi - 将 TAction 重命名为另一种形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10403528/