更改复选框状态而不调用 OnClick 事件

2023-11-23

我想知道当我改变 CheckBox 的状态时

CheckBox->Checked=false;

它调用了CheckBox OnClick事件,如何避免它?


在较新的 Delphi 版本中,您可以使用类助手来添加此功能:

CheckBox.SetCheckedWithoutClick(False);

通过使用以下 VCL 类帮助器TCheckBox:

TCheckBoxHelper = class helper for TCheckBox
    procedure SetCheckedWithoutClick(AChecked: Boolean);
end;

procedure TCheckBoxHelper.SetCheckedWithoutClick(AChecked: Boolean);
begin
    ClicksDisabled := True;
    try
        Checked := AChecked;
    finally
        ClicksDisabled := False;
    end;
end;

只是为了完整起见:FMXTCheckBox会有类似的行为(触发OnChange)。您可以使用以下类帮助器来解决此问题:

TCheckBoxHelper = class helper for TCheckBox
    procedure SetCheckedWithoutClick(AChecked: Boolean);
end;

procedure TCheckBoxHelper.SetCheckedWithoutClick(AChecked: Boolean);
var
    BckEvent: TNotifyEvent;
begin
    BckEvent := OnChange;
    OnChange := nil;
    try
        IsChecked := AChecked;
    finally
        OnChange := BckEvent;
    end;
end;

免责声明:谢谢 dummzeuch 的原创想法。请注意有关类助手的常见提示。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改复选框状态而不调用 OnClick 事件 的相关文章

  • Delphi - 相当于C#的三元运算符? [复制]

    这个问题在这里已经有答案了 可能的重复 Delphi 中是否存在或者将来是否存在条件运算符 https stackoverflow com questions 2108609 is there or is there ever going
  • Delphi - 将物理路径(设备文件句柄)转换为虚拟路径

    我怎样才能转换像这样的路径 设备 HarddiskVolume3 Windows 进入其相应的虚拟路径 如本例中的 c Windows 我个人更喜欢原生方式 function GetHDDDevicesWithDOSPath TString
  • 在 Delphi XE 中将类作为过程的参数传递

    我需要做的是这样的 procedure A type of form var form TForm begin form type of form Create application form showmodal freeandnil f
  • Delphi XE 中的数据绑定向导 - 可以将其配置为映射到 MSXML 接口吗?

    Delphi XE 中的数据绑定向导生成继承自 Delphi 自己的 DOM ADOM XML v4 实现的类和接口 它似乎不支持针对模式进行验证 解析时验证 选项仅适用于 MSXML 供应商type 从 VCL 源代码以及 IDE 中 X
  • Delphi 2007 中的 HelpInsight 文档

    我正在使用 D2007 并尝试使用 HelpInsight 功能 自 D2005 起提供 来记录我的源代码 我主要对让 HelpInsight 工具提示正常工作感兴趣 通过各种网上冲浪和实验 我发现了以下内容 使用三斜杠 注释样式比其他记录
  • Delphi中的抽象类

    我正在使用一个具有许多抽象类的组件套件 现在我想应用多态性 但在创建对象时收到错误抽象类 即使我不需要 我是否应该重写所有虚拟方法 有什么解决方法或解决方案吗 为了创建类的实例 您需要重写所有声明为虚拟抽象的方法 即使您不使用它们 如果您确
  • 在 Delphi 2007 中将具有透明度的位图保存为 PNG

    我有一个包含透明度信息的 Delphi 位图 32 位 我需要将其转换并保存为 PNG 文件 同时保留透明度 我目前拥有的工具是graphics32 Library GR32 PNG 由Christian Budde 提供 和PNGImag
  • 在TImageViewer中,如何获取用户点击图片的位置?

    在TImageViewer控件中 用户可以缩放或平移图片 我的问题是 当用户点击图片时 如何获取用户在图片上的点击位置 尤其是用户可以对图片进行放大 缩小或平移之后 如何获取对应的图片点击位置呢 As shown below How to
  • DELPHI 和 WANT 或 NANT

    We use 巡航控制 net http confluence public thoughtworks org display CCNET Welcome to CruiseControl NET在 Delphi 2006 应用程序中进行持
  • 调试器异常错误和内存超调

    我尝试运行以下代码 但它显示有关内存地址的错误 并显示一条消息 循环后 n 可能未定义 请看一看 var n max integer n integer r R1 f h0 Array of Real const h 0 00889 nip
  • Delphi 2010 - 从 XML 文档解码 Base64 编码图像

    我正在尝试从应用程序中的 XML 文档解码 base64 编码的 EMF 图像并将其呈现在屏幕上 但是 它似乎从未出现 如果我将 XML 文档中的数据复制 粘贴到 Notepad 中并使用Base64 Decode选项并将文件另存为 emf
  • 如何用不同的颜色绘制选定的列表框项目?

    是否可以更改 TListBox 中的项目选择焦点颜色和文本颜色 当项目中未启用主题或列表框样式设置为所有者绘制时 项目周围的选择将被涂成蓝色 我相信这是由系统的外观设置全局定义的 我想将所选项目的颜色更改为自定义颜色 举个例子 结果会是这样
  • 将图像加载到 TImageList 并读取它们?

    我试图通过将 jpg 转换为 bmp 然后将其保存到 imagelist1 来将 jpg 加载到图像列表中 从上到下的代码片段 Selectdir 有效 fileexists 部分有效 这用于加载文件夹中的所有图像 所有图像都以 0 jpg
  • 从其可执行文件的路径获取服务名称

    我有一个可执行文件的路径 它是一个正在运行的服务应用程序 例如 C Program Files x86 Someapp somesvc exe 我想停止并启动它 为此我想我需要获取服务的名称 如下所示 this https stackove
  • Delphi 中表单分发与其生命周期相关的接口对象的安全方法?

    我有一个 Delphi 表单 它提供接口对象背后的功能 代码的其他部分也通过属于该表单的属性获取引用 我无法将接口功能委托给子对象 因为太多的功能是由表单上的控件 组件提供的 我无法使用 TAggregateObject 或 TContai
  • 如何读取和更改 TEdit 控件的值?

    我有一个表格TForm1有 5TEdit and 2 TBitBtn 我还需要该程序 以便在输入数字数据后Edit1 and Edit2 on BitBtn1Click Edit1 and Edit2值将被求和并显示在Edit3 你想做这样
  • Delphi 7 - 处理表单中嵌入框架的 MouseWheel 事件?

    你好 我有一个表格 里面有几个框架 对于某些框架 我希望滚动内容 或至少处理鼠标滚轮事件 我已经尝试过以下方法 只需为每个帧分配一个 OnMouseWheel 事件处理程序 重写父窗体的 MouseWheel 事件 procedure TF
  • 使用 Delphi 读取 Excel 电子表格

    我需要使用 Delphi 2010 读取和写入 Excel 电子表格 没什么花哨的 只需读取和写入不同工作表上特定单元格和范围的值 需要在没有安装 Excel 的情况下工作并支持 Excel 2007 我看过的一些东西 我尝试过使用ADO
  • MainFormOnTaskbar + 工具提示导致焦点窃取

    我使用 Delphi XE2 构建了下面的代码 它创建 Form1 Form1 立即创建 Form2 的实例 当我按下 Form2 上的按钮时 会创建第二个 Form2 现在 如果我将鼠标悬停在第二个 最上面的 Form2 上的按钮上 并等
  • 为什么 TImage 旋转我的图像?

    编写一个移动应用程序 它从安全网站提取图像 如下所示 第一个图像 提取不正确 注意网络版本与移动版本 第二个图像在网站上正确显示 但 Delphi TImage 由于某种原因正在旋转它我不明白为什么 旋转设置为 0 并且在 TImage 组

随机推荐

  • Jenkinsfile - 脚本管道语法中的条件阶段执行

    我们正在使用脚本管道我们的语法Jenkinsfile其中定义了很多阶段来构建和部署我们的代码 我们有一个用例 如果我正在做一个任务 我想运行我的所有阶段完整构建但如果我需要执行一些 AWS 路由 则仅运行一个特定阶段 我知道我可以使用if
  • 如果将 PendingIntent 上的标志设置为 0 会发生什么?

    当您将待处理意图的标志设置为 0 时 到底会发生什么 它只是不升起一个标志还是默认为其他标志之一 不 这是创建新 PendingIntent 的 默认 行为 无论该行为是否已存在 如果您想要更专门的行为 例如在底层 Intent 相同的情况
  • TinyTds 错误:Adaptive Server 连接超时

    我们正在 Rails 3 2 12 ruby 1 9 3 上使用当前的tinyTDS gem 0 6 2 运行 Ruby on Rails 应用程序 我们使用 MS SQL 2012 或 2014 并面临比平常更多的以下错误消息 TinyT
  • 如何将 16 位 PCM 音频字节数组转换为双精度或浮点数组?

    我正在尝试对 3gpp 音频文件执行快速傅里叶变换 该文件包含来自手机麦克风的 44100kHz 的 5 秒小录音 出于显而易见的原因 我能找到的每个 Java FFT 算法都只接受 double float 或 Complex 输入 但我
  • 将 Azure 磁盘附加到 AKS pod 时出现权限错误

    我已经与这个错误作斗争了几个小时了 找到了几篇文章 但到目前为止没有任何帮助 我的工作基于 操作指南 gt 配置数据卷 gt Azure 磁盘 静态 https learn microsoft com en us azure aks azu
  • C++ 中的变量到底是什么?

    标准说 A variable通过对象的声明引入 变量的名称表示对象 但这个定义实际上意味着什么 变量是否为对象提供名称 即变量是否只是匿名对象的命名机制 或者变量就是名称本身 或者变量是否是一个命名对象 因为每个变量也是一个对象 或者变量只
  • 为什么 check_box 表单助手会生成两个复选框,其中一个是隐藏的?

    这段代码 form fo store products 做 f f check box track inventory 创建这个 html
  • 如何通过 jQuery 设置光标图像?

    在网络应用程序中 我有一个加载事件 如果浏览器正在从服务器加载数据 我希望光标更改为显示时钟的 gif 如何更改光标外观 我只在参考光标外观的博客中找到了这个 this css cursor move 我想改为加载图像 试试这个方法 thi
  • 子集合 List.Any 的表达式树

    我正在使用表达式树构建通用 linq 查询 在子集合上创建表达式时我陷入困境 由于类型不兼容 方法调用会崩溃 通常我知道该放什么 但是 Any 方法调用让我感到困惑 我已经尝试了所有我能想到的类型 但没有成功 任何帮助 将不胜感激 这是我的
  • FullCalendar 在 dayClick 上打开引导模式

    我想在用户单击 fullCalendar 中的某一天时打开引导模式 我查看了 dayClick 事件 但不知道如何调用模型 dayClick function date jsEvent view call the model 调用引导模型的
  • 我必须使用什么 Uxtheme 函数来获取最小化、最大化和关闭按钮的默认大小?

    我正在使用DrawThemeBackground函数在画布上绘制一些系统元素 我需要绘制表单的标题按钮 我错过的唯一部分是如何获得default标题按钮的大小 Exist any Uxtheme function to get that i
  • Android:将多行插入sqlite数据库不起作用

    我正在使用以下 Android 项目方法将单行插入数据库 myDB execSQL INSERT INTO Buss BussName RouteName VALUES buss1 buss2 效果很好 我看到这个链接在sqlite数据库中
  • 这个素数生成器的执行时间可以提高吗?

    我撰写本文时的最初目标是尽可能留下最小的足迹 我可以自信地说 这个目标已经实现了 不幸的是 这使我的实施速度相当缓慢 要生成 200 万以下的所有素数 在 3Ghz Intel 芯片上大约需要 8 秒 是否有办法以最小的牺牲来改善此代码的执
  • Google 图表显示错误的月份

    I ve got a google line chart which shows the correct line but the annotation of the Date is off by one month exactly The
  • 什么时候应该避免使用 NHibernate 的延迟加载功能?

    我听到的关于 NHibernate 延迟加载的大部分说法是 使用它比不使用它要好 似乎最小化数据库访问以减少瓶颈是有意义的 但几乎没有什么事情是不需要权衡的 当然它会迫使你有一些限制设计virtual特性 但我也注意到一些开发人员关闭了某些
  • PostgreSQL 多维数组

    我试图将数据作为多维数组传递 但我得到的行为对我来说似乎很奇怪 具体来说 我试图从二维数组中获取单个元素 因此从二维数组中获取一维数组 但它没有按照我期望的方式工作 在下面的示例中 2 4 和 5 按我预期的方式工作 但 1 和 3 则不然
  • 如何在Python中使用日志记录打印列表项+整数/字符串

    我想打印带有项目索引的列表项目 例如 0 idx 10 degree 0 1 idx 20 degree 0 根据下面的代码 如何将 0 附加为整数 字符串 列表项 import logging class Node object slot
  • 一般最小值和最大值 - C++

    编写一个通用的最小函数 我想到了两个问题 该代码适用于任何输入类型和不同的参数编号 namespace xyz template
  • mysql MyISAM 和 InnoDB 索引使用差异

    我有这些小桌子 item and category CREATE TABLE item id mediumint 8 unsigned NOT NULL AUTO INCREMENT name varchar 150 NOT NULL ca
  • 更改复选框状态而不调用 OnClick 事件

    我想知道当我改变 CheckBox 的状态时 CheckBox gt Checked false 它调用了CheckBox OnClick事件 如何避免它 在较新的 Delphi 版本中 您可以使用类助手来添加此功能 CheckBox Se