gpt4 book ai didi

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

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

我有 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/

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