问题标签 [tactionmanager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
501 浏览

delphi - 操作管理器在数据模块中时未捕获键盘快捷键?

在 Delphi XE2 中,我的应用程序中有一个数据模块,该数据模块中有一个动作管理器。我已经为每个操作分配了键盘快捷键,但是当我尝试在应用程序中使用这些快捷键时,它并没有捕捉到它们。

我正在应用程序的初始化中创建数据模块(由于项目主文件中的 IDE 扭曲代码,它被移动到不同的单元)......

像这样创建数据模块的原因是应用程序的所有各种形式都能够使用其中的组件,特别是动作管理器。它必须在创建主窗体之前创建。

当操作管理器位于数据模块中时,如何使操作项的键盘快捷键起作用?

0 投票
2 回答
718 浏览

delphi - 解决项目未取消选择的 TActionMainMenuBar 绘画错误

TActionMainMenuBar 存在绘制没有子项的根元素的错误。

使用 Delphi XE2 / w7-32bit**

如何重现:
使用 TActionMainMenuBar 构建菜单,向其中添加一些操作:

为所有操作分配一个空方法

现在运行应用程序并尝试单击选项或帮助元素。
现在单击表单,但仍然按下菜单元素!

存在任何解决方法吗?

upd:看截图,菜单元素向下,但鼠标光标不在菜单上,自动检查为假,检查也是假的。
在此处输入图像描述
这里表单上没有任何颜色图,管理器样式是平台默认值

0 投票
1 回答
475 浏览

delphi - 如果某些菜单项不适合水平放置,如何将 Chevron(双箭头)添加到 TActionMainMenuBar

雪佛龙
TActionMainMenuBar 没有这个功能。
TActionToolBar 自动添加 Chevron,但是这个菜单有一些自定义命令。

如何将此功能添加到 TActionMainMenuBar 并隐藏 Chevron 菜单中的自定义命令?
或者也许模仿这个功能?

0 投票
0 回答
588 浏览

delphi - Delphi中actionmanager的动作不会出现快捷键

我尝试在delphi7中使用actionmanager,几乎可以,除非我需要让action1的标题包含在快捷键中,例如:

当我为操作项分配快捷方式时,我需要什么,我希望它自动出现在工具栏的按钮中。 截屏

0 投票
3 回答
2424 浏览

delphi - 如何在 ActionMainMenuBar 中禁用菜单、子菜单?

使用:Delphi XE3,VCL Forms 应用程序

我有一个包含 ActionMainMenuBar 中的子菜单的菜单。我如何通过代码:

  1. 禁用菜单
  2. 禁用子菜单
0 投票
1 回答
1543 浏览

delphi - 如何在 ActionMainMenuBar 上的主菜单(=类别,通过 TAction 子菜单)上添加 OnClick 事件?

我正在替换我的好旧TMainMenu的,TActionMainMenuBar但有一些问题。

我目前正在为我的主菜单项使用“OnClick”处理程序,但我找不到使用TActionMainMenuBar.

例如,我创建了一个TAction类别为“示例”的“测试”,然后将其拖放到TActionMainMenuBar. 我可以将代码添加到子菜单“Test”的执行处理程序,因为它已TAction分配给它,但我无法将事件代码添加到主菜单项“Sample”,因为它只是“的 Category / TActionClientItem”测试”,没有事件。

我试图为此分配一个动作TActionClientItem,但 Delphi XE3 说“你不能设置属性......”,当我点击它时,它给了我一个对话框“当前框架没有实现的动作'无'”。

另一种方法是两个TActions,“样本”和“测试”,“(无类别)”,但我不能将“测试”拖放为我TActionMenuBar之前放置的“样本”的子菜单。看起来我只能拖放主菜单项,而不是空主菜单项上的子菜单项。

0 投票
1 回答
1353 浏览

delphi - 如何在运行时递归地创建 ActionBar?

我正在编写一个类,它将一个大型遗留应用程序的TMainMenu层次结构映射到TActionMainMenuBar项目。

最重要的方法大量借鉴了 Steve Trevethen 的 EDN CodeCentralC 文章,如下所示。我为长度道歉,但这可能是我在这种情况下可以有意义地展示的最短代码长度:

上面最重要的一行是这一行,也是错误的一行:

如果代码是这样编写的,那么我会以扁平形式显示所有菜单项。所以我需要上面一行中的东西AC.GetMeSubItems.ActionClients,但我不知道它是什么。AC是类型TActionClientItem并且是工具栏按钮本身也是在运行时创建的。

我一生无法弄清楚的是,如果我需要一次递归地填充动作列表和菜单项,我该怎么做?也许我的想法受到我从这里开始的示例代码的限制。似乎我只需要一行代码就知道如何做到这一点。

我有一种感觉,我只是不太了解我在这里搞砸的各种类的复杂层次关系。

更新:以下似乎可行,但我不相信自己。

在此处输入图像描述

0 投票
0 回答
242 浏览

delphi - 为什么每次 CM_SYSFONTCHANGED 进入时,TCustomActionBar(和 TActionMainMenuBar)都会清除 ColorMap 属性?

我假设这是一个我必须在 TCustomActionBar 中解决的错误,每次收到 CM_SYSFONTCHANGED 消息时都会忘记自定义颜色映射。

看着TCustomActionBar.CMSysFontChanged(var Message: TMessage)它来电AdjustSize,那么SetColorMap(nil),那么RecreateControls。在类的设计中似乎没有规定要记住ColorMap我的已发布属性TActionMainMenuBar

有简单的解决方法吗?看来我必须检查很多这种情况?我应该把CM_SYSFONTCHANGED自己挂在后代班级还是当地的中介班级?

有没有人试过这个,看看这是否会TCustomActionBar以其他方式破坏?这个 VCL 功能是必不可少的、愚蠢的还是两者兼而有之?

我的插入类黑客似乎有效,这是修复它的正确方法,有什么方法可以弄清楚该CM_SYSFONTCHANGED消息来自何处或它可能具有的各种子含义的任何权威来源(WPARAM和 LPARAM 始终为零)?

0 投票
1 回答
1125 浏览

delphi - ActionMainMenuBar - 手动添加操作项后菜单项未更新其禁用状态

使用:Delphi XE2,32位Windows VCL表单应用程序

在 ActionManager 中,我添加了一个操作并分配了类别名称。然后我将类别从 ActionManager 拖放到表单上的 ActionMainMenuBar 上。我这样做是为了在 ActionMainMenuBar 上创建菜单项。因为我计划通过代码手动创建和添加操作,并且对“第一个”操作没有实际用途,所以我通过设置隐藏它Visbile := False

然而,在运行时,即使在以编程方式创建操作并将它们添加到菜单之后,菜单仍然处于禁用状态 - 这不是预期的,因为添加的操作已启用并且具有有效的 OnExecute 事件处理程序。

我的问题是如何刷新菜单项,以便在添加一个或多个操作项(子菜单项)后启用它?

在代码中,我有这个:

这是设计模式下的 ActionMainMenuBar、ActionManager 和初始操作(Visible 设置为 False)的屏幕截图:

这是它最初在设计模式下的样子

TIA。

0 投票
1 回答
137 浏览

delphi - 分享动作时如何知道点击了哪个控件?

我正在TActionManager为用户界面实现操作(在 a 中)。某些控件在单击时会执行相同的操作。但是,在该操作处理程序中,我需要知道用户实际单击了哪个控件。但它Sender是一个TAction而不是原始控件。

如何识别用户实际按下了使用此操作的哪个控件?