问题标签 [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 回答
3112 浏览

delphi - 在 Delphi 中执行自动取消选中按钮的操作

当按下 TSpeedButton 时,我想执行一个操作,而当“未按下”同一个按钮时,我想执行另一个操作。我知道没有 onunpress 事件,但是当按下不同的按钮时,有什么简单的方法可以让我执行一个动作吗?

显得太笨重了。

0 投票
3 回答
2126 浏览

delphi - Delphi:如何停止 TAction 快捷键自动重复?

我正在使用 Delphi TActionList,其中包含一些操作的快捷键。

我想防止某些操作被键盘自动重复多次触发,但我不想影响全局的自动重复操作。这样做的最佳方法是什么?

澄清:我仍然需要处理多个快速按键 -我只想忽略自动重复生成的按键。

0 投票
4 回答
2114 浏览

delphi - 辅助快捷方式不触发

我正在使用 Delpho 2006。场景:

在数据模块上,我有一个 ActionList。其中一个操作有一个快捷键 Ctrl+F4,我想要一个辅助快捷键 Ctrl+W。我尝试了以下所有方法:

将 Ctrl+W 添加到 IDE 中的操作 SecondaryShortcut 列表中。

使用以下任一方法将其添加到 DataModuleCreate 过程中

或者

在将要使用它的窗体的 Create 或 FormShow 过程中使用这两种方法。

主要快捷方式始终有效,但次要快捷方式无效。

当我将 ActionList 放在主窗体而不是数据模块上时,只需在 IDE 中添加 Ctrl+W 即可。我做错了什么?

0 投票
1 回答
673 浏览

delphi - 如何在运行时访问 Delphi 2009 功能区按钮的选中属性?

我想在单击任何功能区按钮时将功能区的所有 TAction 对象的“已检查”属性重置为 false,然后仅在按下的按钮上将其设置为 true。但是我还没有找到一种方法来访问 ActionManager 的 Actions 的所有“已检查”属性。我想我需要遍历动作管理器的动作列表……但是,我还没有找到正确的方法。如果有人能给我一些提示,我会很高兴。

谢谢!

0 投票
2 回答
546 浏览

delphi - 有没有办法用快捷方式覆盖以前注册的操作?

我有一个有很多动作的单元,有些动作有快捷方式,有些甚至有相同的快捷方式。这是因为它们在应用程序中属于不同的模块,并且它们不在同一时间上下文中。

现在我有了一个可以随时随地启动的全局非模态对话框(称为 objectinspector)。它具有与模块中其他位置相同的快捷方式的一些操作。

因此,我想在 objectinspector 处于活动状态时临时覆盖那些共享相同快捷方式的操作,并在停用时释放它。

我在 objectinspectors OnActivate 事件中有这段代码:

  • ClientActions 是包含操作的单元。
  • RegisterAction 是一种将事件与动作连接起来的方法。
  • actObjectInspectorNewWindow 是实际操作。
  • ShowNewObject 是执行操作时应调用的事件。

因此,对于每个模块和无模式对话框,上述方法都会注册一些操作。当 2 个操作共享相同的快捷方式时,问题就出现了。似乎首先注册的操作获胜并在用户按下快捷方式时执行。我更喜欢执行使用该快捷方式注册操作的最后一个操作。

如何才能做到这一点 ?

问候

0 投票
2 回答
6131 浏览

delphi - Delphi:如何为 Action/MenuItem 分配向上箭头键盘快捷键,并保持其实际用于导航列表控件 (ListBox/VTV)?

请帮助我:如何为操作或菜单项分配向上箭头键盘快捷键,并同时保持其实际用于导航列表控件(例如 ListBox/Virtual Treeview/other)?

谢谢!

0 投票
3 回答
1380 浏览

delphi - 扩展 delphi TEditCopy 操作以将列表框项目复制到剪贴板

我有一个表单,它的大部分功能都是使用标准 TAction 实现的。我有一个菜单、一个工具栏和一些工具按钮。我已经实现了剪贴板复制/粘贴,根本没有代码,只使用 TEditCopy 和 TEditPaste 操作。它在我拥有的 TEdit 和 TMemo 框中完美运行。

现在,我也希望它与 TListBox 一起工作。具体来说,我希望能够使用完全相同的菜单项、快捷键和工具按钮复制 TListBox 中的选定列表项。

所以,我相信我需要扩展 TEditCopy 操作。但这对我来说似乎不是很直接。特别是,TEditAction 检查焦点控件是否为 TCustomEdit 控件,而不是 TListBox。我有点担心工作量太大。

显而易见的替代方法是忘记标准操作并在通用 TAction 的 OnExecute 方法中实现复制到剪贴板。

但是,在放弃之前,您有什么想法、提示或技巧可以帮助我扩展标准 TEditCopy 操作吗?

0 投票
1 回答
872 浏览

delphi - Delphi 2009 Actionmanager 默认Imagelist

我刚刚开始了一个新项目,我是第一次使用 Delphi 2009 Actionmanager 组件。Actionmanager 有一个标准操作列表,它为我提供了诸如文件打开/保存等操作,而无需任何编码 - 很棒的东西。是否有一个标准的 ImageList 来配合这个,由 ActionManager 填充的默认 ImageIndex 的正确图像?

0 投票
7 回答
11873 浏览

delphi - 如何查看谁触发了 Delphi 中的操作?

当触发 TAction 事件时,“发送者”始终是操作本身。通常这是最有用的,但是否有可能找出谁触发了操作的 OnExecute 事件?

例子

假设您有一个包含以下内容的表单:

  • 2 个按钮,称为Button1Button2
  • 1 个 TAction 被调用actDoStuff

相同的动作被分配给两个按钮。是否可以显示我单击了哪个按钮?

例子.dfm

例子.pas

我目前看到的唯一解决方案是不使用按钮的 action 属性,而是为每个按钮设置一个事件处理程序,然后从那里调用 actDoStuffExecute() ,但这违背了首先使用操作的全部目的。

我也不希望对每个单独的控件都有专门的操作。上面的示例是我面临的问题的简化版本。我有一个带有可变数量的菜单项(文件名)的菜单,每个菜单项基本上都必须做同样的事情,除了加载另一个文件。为每个菜单项设置操作有点愚蠢。

0 投票
2 回答
4298 浏览

delphi - 创建没有相应菜单项的 Delphi 应用程序快捷方式

我想在我的应用程序中有一个快捷键组合(如 Ctrl+Alt+D)来调用一个函数,但我不希望该快捷键出现在任何菜单上。是否可以在您的应用程序中提供不可见的快捷方式?