gpt4 book ai didi

delphi - TAction.ShortCut 在动态创建的 TAction 中不起作用

转载 作者:行者123 更新时间:2023-12-03 15:54:41 27 4
gpt4 key购买 nike

在Delphi XE5中:我的窗体上有一个TActionManager(称为ActionManager)和一个TRibbon(称为Ribbon)。我正在添加这样的自定义操作:

ActionBar := ActionManager.ActionBars.Add;
newAction := TAction.Create(MainForm.ActionManager);
newAction.Name := 'Topics';
newAction.Caption := 'Topics';
newAction.OnExecute := MainForm.HelpTopicsItemClick;
newMenu := ActionBar.Items.Add;
newMenu.Action := newAction;
newAction.ShortCut := TextToShortCut('F1');

此后,我将它们放在页面/选项卡和组中的功能区上:

rp := TRibbonPage.Create(ActionManager);
rp.Parent := Ribbon;
Ribbon.AddTab(rp).Caption := 'Help';
rg := TRibbonGroup.Create(ActionManager);
rg.Parent := rp;
rg.ActionManager := ActionManager;
rg.Caption := 'Help';
rg.ActionClient := ActionBar;

当我点击它时,该操作工作正常,但是当我按“F1”时,什么也没有发生。当我使用 Delphi 编辑器手动添加操作时,快捷方式工作正常。

我已经尝试过:newMenu.ShortCut := newAction.ShortCut

这没有帮助。我错过了什么?

最佳答案

当您创建新操作时,其 ActionList 属性不会自动设置为您通过 Create 提供的 Owner。您必须显式设置 ActionList 才能使其工作。

newAction := TAction.Create(MainForm.ActionManager);
newAction.ActionList := MainForm.ActionManager;
newAction.Name := 'Topics';

关于delphi - TAction.ShortCut 在动态创建的 TAction 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21489035/

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