问题标签 [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 投票
1 回答
1843 浏览

delphi - 使用 Vcl 样式时更改 TActionMainMenuBar 的字体

通常可以像这样更改 TActionMainMenuBar 或 TMainMenu 的字体:

使用 Vcl 样式时,如果为组件注册了 StyleHook,则不再可能。我进入位图样式设计器(以前称为 Vcl 样式设计器)并更改了MenuItemTextNormal的字体。

问题是更改字体没有任何作用,我只能成功更改文本的颜色。

显然我在这里遗漏了一些东西,为什么我可以更改颜色而不是字体?

0 投票
3 回答
584 浏览

delphi - 将 TAction 用于“仅图标”TButton

我有一个用于菜单项和 TButton 的 TAction。我希望菜单项显示标签,而 TButton显示图标。但是,当一个 Action 被分配时,Vcl 会自动设置 TButton 的 Caption 属性,我无法摆脱它。

有任何想法吗?

0 投票
2 回答
360 浏览

windows - 为什么:可见,控制分配的 TAction 会影响应用程序的 CPU 使用率?

如果 aTAction链接到诸如TToolButton( Item of TToolBar) 或TActionClientItem( Item of TActionToolBar) 之类的对象,并且该对象在运行时可见,那么每当您在表单中移动鼠标(工具栏以外的任何位置)时,似乎都会完成额外的负载根据可见 TAction 的数量在 CPU 上进行比较,这与在前面提到的任何一个条上都看不到任何 TAction 链接的项目时移动鼠标进行比较。

很明显,完成的额外负载的显着百分比完全取决于您正在运行的钻机类型,但我注意到的是,当您的应用程序具有以下功能时,实际差异可能会很大:

  • 很多可见的 TAction 链接项目
  • 一个自定义组件,已经对 onMouseOver 事件执行了较小的计算,例如更改控件的外观
  • 自定义视觉样式

那么问题来了,为什么可见项链接的 TAction 组件会影响鼠标移动的处理?

0 投票
1 回答
191 浏览

c++builder - 如何在 TAc​​tions Execute 方法中转换为 TMenuItem?

我在 CodeGear C++ VCL 应用程序中有许多相关的 TMenuItem。

每个 TMenuItem 都与同一个动作 (TAction) 相关联。

单击 MenuItem 时,将触发操作(即其执行方法)。

我将需要以某种方式在操作 OnExecute 函数中转换 Sender 参数,以确定单击了哪个菜单项。

目前我有这样的东西

但以上不起作用动作所有者不是MenuItem。

0 投票
1 回答
729 浏览

delphi - 具有在运行时创建的操作的工具按钮

我在工具栏中使用 Delphi 2009 Toolbuttons 创建,如下所示:创建 TToolbutton 运行时

不同之处在于我也在运行时分配了一个动作。我的代码如下:

当我留下线条(标记的问题)时,我看到以下奇怪的行为:

我按下按钮并触发分配的操作,但按钮左侧的两个按钮设置为向下。当我再次按下另一个按钮时,左边的两个按钮向下,前面的按钮向上。

我需要帮助,我不知道原因

亲切的问候

克里斯汀

0 投票
3 回答
1985 浏览

delphi - TAction.OnUpdate 事件是否会降低性能?

在Delphi XE7中,我使用这个技巧来自动启用或禁用一个工具栏按钮(“编辑ListView项目”),根据是否选择了ListView中的项目,以防止用户在没有ListView的情况下点击按钮选择的项目:

  • 将 TActionList 放在 VCL 表单上。
  • 在 ActionList 中创建一个动作actTest
  • 在窗体上放置一个 TButton。
  • 将操作分配actTest给按钮。
  • 在窗体上放置一个 TListView。
  • 在 ListView 中创建两个项目。
  • 如果OnUpdate发生actTest动作,请写:

    /li>

现在您可以看到按钮根据是否选择了 ListView 中的项目而启用或禁用,这与您是使用鼠标还是使用键盘还是以编程方式选择/取消选择项目无关。

但是,在 CodeSite Live Viewer 中,我可以看到该事件被连续且非常频繁地actTestUpdate触发,因此该语句被执行得非常频繁。actTest.Enabled := ListView1.SelCount > 0;

所以我的问题是:这会降低性能吗?如果是,是否还有其他技巧可以实现上述目的?

0 投票
0 回答
280 浏览

delphi - 当要显示的项目太多时如何让 TActionMainMenuBar 下拉项目滚动

有谁知道如何使用 TThemedPopupMenu 让 TActionMainMenuBar 像标准菜单一样工作,如果屏幕上有太多项目(垂直)无法容纳,则会出现两个滚动按钮(一个顶部,一个底部)?

我努力了:

  • 将 TActionMainMenuBar.Orientation 设置为 boTopToBottom 并将 TActionMainMenuBar.AllowScrolling 设置为 true - 这使得表单上的栏具有滚动条,您实际上看不到顶部项目。

它看起来像这样:

而不是这样的:

  • 将 TThemedPopupMenu.Orientation 设置为 boTopToBottom 并将 TThemedPopupMenu.AllowScrolling 设置为 true。这具有水平挤压下拉菜单的效果,图标和快捷方式相互叠加。

之所以设置这些属性是因为 TCustomActionDockBar.SetAllowScrolling 只有在“AllowScrolling and (Orientation = boTopToBottom))”时才设置为true

我在互联网上找到的关于这类事情的唯一参考是 Brian Long 的“动作、动作列表和动作管理器”

有谁知道是否可以让动作管理器垂直滚动?或者有任何参考资料可以帮助我吗?</p>

0 投票
1 回答
532 浏览

delphi - Delphi 默认数据集操作 Tdatasetdelete

Delphi 的奇妙之处之一是 TActionlist。更好的是默认的 TActions,比如 TDataset-actions。我有一个带有几个简单表格的表格。所以我让 Delphi 通过几个 TDatasetinsert/delete/edit 等来决定哪个数据源/表处于活动状态。

但现在我希望删除操作有一个对话框“你确定”之类的。如果我干预动作的执行事件,则动作似乎在对话后停止。所以我想像 somedatasource.dataset.delete 一样自己做删除操作。但我不知道这个 TDatasetdelete 是哪个数据源处于活动状态。

TDatasetdelete 有一个 datasource 属性,但默认为 nil 并且读取它会导致访问冲突。即使我不分配它,当 TDatasetdelete 执行时,也会从我的一个数据源中删除一个数据行。在这种情况下,我如何找出哪个数据源是“活动的”,换句话说,它在执行时将使用哪个数据源。

0 投票
1 回答
326 浏览

delphi - 如何避免重复执行 TAction.Shortcut?

在 Delphi 10.1.2 中,TActionListTAction用这些属性创建了一个并为其分配了一个快捷方式Ctrl+F12

在此处输入图像描述

在运行时,当我按住快捷键时Ctrl+F12,会重复执行该操作(速度取决于系统键盘的重复速度)。

那么如何让动作只执行一次(直到这些键被抬起),即使用户按住键或者用户的系统有一个高键盘重复速度设置?

0 投票
0 回答
129 浏览

android - FMX - TAction OnUpdate 不起作用

我有一个 FMX 表单,其中包含一个按钮和一个带有 TAction 'Action1' 的 TActionList。Action1 有一个Execute 过程和一个Update 过程,并且按钮的属性'Action' 设置为Action1。

如果我在 Windows 上运行应用程序,它会进入 OnUpdate 事件并执行它应该做的所有事情;如果我在 Android 设备上运行它,它不会进入 OnUpdate 事件。

为什么会发生这种情况,我该如何解决?

编辑: 我正在使用 Delphi 10.2