首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TAction.ShortCut不能在动态创建的TAction中工作

TAction.ShortCut不能在动态创建的TAction中工作
EN

Stack Overflow用户
提问于 2014-01-31 20:03:55
回答 1查看 1.1K关注 0票数 3

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

代码语言:javascript
复制
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');

在此之后,我将它们放在一个页面/选项卡和一个组中的丝带上:

代码语言:javascript
复制
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

这没什么用。我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-01 09:37:39

创建新操作时,它的ActionList属性不会自动设置为创建时提供的所有者。您必须明确地设置ActionList才能使其工作。

代码语言:javascript
复制
newAction := TAction.Create(MainForm.ActionManager);
newAction.ActionList := MainForm.ActionManager;
newAction.Name := 'Topics';
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21489035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档