问题标签 [taction]

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 投票
2 回答
1349 浏览

delphi - TAction 电台项目

在动作乐队中有一个 TAction 组件。

该组件包含一个名为

然而该领域

不在这里。

  1. 这是为什么?
  2. 如何使 TAction 成为复选框?

动作的方向是ActionMainMenuBar 和ActionManager。

0 投票
2 回答
2440 浏览

delphi - 如何在运行时向操作项添加下拉菜单

我正在使用以下方法在运行时创建一个带有 Action 的 ActionClient。

如果列表中已经有一个项目,这可以正常工作,但如果没有,则根本不起作用

例如,如果我在设计时添加一个项目,那么我可以在运行时添加更多项目

在此处输入图像描述 在此处输入图像描述

但是如果我在设计时不添加任何内容,则没有下拉菜单来显示项目列表,添加项目后不会出现下拉菜单。

在此处输入图像描述

这不必通过操作来完成,但菜单系统的其余部分使用操作,我认为我不能将标准 MenuItems 添加到操作下拉列表中。

德尔福 2005

0 投票
1 回答
1144 浏览

delphi - Delphi XE - TRibbon 动作总是将焦点发送到 MainForm

当我在不是应用程序的 MainForm 的窗体上放置一个 TRibbon 控件时,该 TRibbon 的操作(即剪切、粘贴)将始终在执行该操作后将焦点返回到 MainForm。

即使持有 TRibbon 的 TForm 不是 MainForm 的子级,也会发生这种情况。

我使用的是 Windows 7 64 位,Embarcadero RAD Studio XE 版本 15.0.3953.35171。

我是否错误地使用了 TRibbon 控件,或者这是 TRibbon 的问题?

0 投票
3 回答
1608 浏览

delphi - 如何在设计时使子组件 TAction-s 可用?

在我的自定义组件中,我创建了一些 TAction-s 作为子组件。它们都已发布,但我无法在设计时分配它们,因为它们无法通过对象检查器获得。

对象检查器如何使它们“可迭代”?我试图将操作的所有者设置为自定义组件(即托管表单)的所有者,但没有成功。

编辑:看起来 Embarcadero 改变了与此问题相关的 Delphi IDE 行为。如果您使用 XE 之前的 Delphi 版本,您应该使用我自己的答案中的解决方案。对于 XE 及更高版本,您应该使用 Craig Peterson 的解决方案。

编辑:我添加了自己的答案来解决问题,即通过在我的自定义组件中创建一个 TCustomActionList 实例并将其所有者设置为托管表单(自定义组件的所有者)。但是我对这个解决方案不太满意,因为我认为 TCustomActionList 的实例有点多余。所以我仍然希望得到更好的解决方案。

编辑:添加代码示例

0 投票
1 回答
331 浏览

delphi - 自定义绘制 TAction 下拉菜单

我为带有 TAction 列表的 TActionClientItem 创建了一个下拉菜单。我想知道如何挂钩菜单的绘图事件或内部的每个 TAction 以不同的方式显示这些 TAction 的标题!?像 TAction.OnDrawItem 或 TActionClientItem .OnDrawItem ...

干杯。

0 投票
1 回答
1100 浏览

delphi - 如何在运行时将 TAction 分配给工具栏按钮?

我根据设置文件动态添加工具栏按钮。我想将 TAction 分配给他们。现在我添加了带有动作 OnExecute 处理程序的 OnClick 事件,但是如果禁用了动作,则工具栏按钮不会自动禁用,例如在设计时添加的 TMenuItems。

因此,换句话说,我希望使用 IDE 中的“Action”下拉菜单来分配 TAction 的设计时运行时版本。

这是我到目前为止所做的(代码是 C++,但它的作用很明显)。

这会将按钮添加到工具栏,它似乎遵循动作启用/禁用状态,但单击时没有任何反应。如何正确且完整地添加操作?

0 投票
2 回答
684 浏览

delphi - 为另一个表单重命名 TAction

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

第一种形式是主要形式 - 它拥有TActionManagerTAction标题为“Action”。

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

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

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

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

例子:

  1. 创建 Form1 和 Form2 并将主菜单添加到两者
  2. 将 TActionManager 拖放到 Form1 并在其中创建 Action1。
  3. 在 Form1 Action1 中分配菜单项,然后修改 Caption(标题现在显示为粗体,表示从默认值更改)
  4. 在 Form2 中分配菜单项以及 Action1(来自 Form1 TActionManager)并更改默认标题。
  5. 现在在运行期间,Form1 已更改标题(不同于 Action1.Caption),并且 Form2 具有与 Action1.Caption 相同的标题,尽管标题应该是在步骤 4 中更改的新值。
0 投票
1 回答
810 浏览

delphi - MDI 应用程序中的 TActionManager。失败的行动

我有一个 MDI 应用程序,我正在使用 TActionManager 来管理我的应用程序中的操作,这也意味着它包含我的 MDIChild 表单的操作。

这是一个重新创建我的问题的简单示例:

使用 2 个表单创建一个新的 VCL Forms 应用程序。Form1 & Form2 在 Form1 上放置一个 TButton 和一个 TActionManager。使用 TActionManager 的弹出编辑器创建 2 个 TAction。为 Form1 设置 FormStyle := fsMDIForm。为 Form2 设置 FormStyle := fsMDIChild。

将此代码添加到相应的事件:

将 TActionToolBar 拖放到 Form2 上。使用 TActionManager 弹出编辑器将 Action1 和 Action2 放在此 TActionToolBar 上。保存并运行。单击 Form1 上的按钮以显示 Form2。一切都按预期工作。现在关闭 Form2 并重新打开它。缺少动作...

知道我真的需要使用 TActionManager,有没有办法避免丢失我的操作?

0 投票
1 回答
1451 浏览

delphi - 将新属性添加到 TActionList 中的 Action

如何在 Delphi 的 TActionList 的操作中添加新的已发布(显示在对象检查器中)属性

属性数据类型是布尔值。

谢谢。

0 投票
1 回答
624 浏览

delphi - 如何从 TActionManager 获取所有 TAction?

我的应用程序中有一个TActionManager,其中定义了所有操作。我需要获取其所有操作的列表;目前,使用它的 Actions 属性,我可以获得动作 ( GetNamePath) 的“路径”,但我也想获得它的标题。

是否可以从动作管理器获取所有动作?