delphi - 将 TAction 重命名为另一种形式

标签 delphi delphi-2010 c++builder-2010 taction

我有 2 个表单,我想共享一个 TActionManager 并分配了 TAction-s。

第一个表单是主表单 - 它包含 TActionManagerTAction 以及标题“Action”。

Form1 的主菜单将此操作和菜单项标题属性设置为“操作 A”。 Form2 包含 Form1,并且还将操作分配给 menuitem,并将标题设置为“Action B”。

在设计期间,一切看起来都不错 - 菜单项在 Form1 和 Form2 中被命名为“Action A”和“Action B”,并且分配了相同的操作。它在运行时也能正常工作(两种形式的 OnExecute 都被正确处理)。

但是,在运行时,Form1 菜单项的标题为“Action A”,Form2 的菜单项标题为“Action”,就像操作标题一样。

我是否错误地包含了它们,是否可以将 Form1 包含在 Form2 上以共享操作并更改标题?这是 D2010/CB2010 中的错误吗?

示例:

  1. 创建 Form1 和 Form2 并向两者添加主菜单
  2. 将 TActionManager 拖放到 Form1 中并在其中创建 Action1。
  3. 在 Form1 Action1 中分配菜单项,然后修改标题(标题现在显示为粗体,表示对默认值的更改)
  4. 在 Form2 和 Action1 中分配菜单项(来自 Form1 TActionManager)并更改默认标题。
  5. 在运行时,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/

相关文章:

delphi - 如何解决 Delphi 无法准确处理日期时间操作的问题?

sql-server-2005 - sql server 2005 delphi 2010 dbexpress 连接

delphi - 使用 indy/delphi 保护 ftp -> 文件上传和下载

Delphi函数将字符串转换为DOS格式

Delphi 2010 和泛型

delphi - 要将复杂的应用程序从 C++Builder 2007 升级到 2010,我需要了解哪些信息?

delphi - TMainMenu 中的单选项目不使用点,而是使用复选标记

delphi - 有什么方法可以获取 TTimer 发生火灾之前的剩余时间吗?

Delphi 简单 TCP 服务器挂起。表单卡住但服务器继续管理客户端