首页 > delphi > delphi6中checkbox的值改变时不会触发单击事件

delphi6中checkbox的值改变时不会触发单击事件

2010年9月19日 亲亲宝宝 发表评论 阅读评论

我们可能会在checkbox中添加onclick事件,有时在程序修改checkbox的值时不想触发onclick事件怎么办呢?自从没有了OnCheckedChanged事件,好像有些麻烦,这里介绍两种方式:
第一种:要麻烦一些,先定义一个事件变量,把当前的事件保存起来,然后设置复选框的单击事件为空,赋完值后,在恢复单击事件,支持delphi6的版本
procedure SetCheckedState(const checkBox : TCheckBox; const check : boolean) ;
var
  onClickHandler : TNotifyEvent;
begin
  with checkBox do
  begin
  onClickHandler := OnClick;
  OnClick := nil;
  Checked := check;
  OnClick := onClickHandler;
  end;
end; 
使用方法举例: 
//toggle Checked state,把上面定义的方法要放在调用的前面
begin
  SetCheckedState(CheckBox1, NOT CheckBox1.Checked) ;
end;

第二种:要简单的多,但是我目前使用的delphi6不支持,只测试了第一种方法;当设置ClicksDisabled为true时,就不会触发onclick事件了。
with TCheckBoxEx(CheckBox1) do
begin
  ClicksDisabled := true;
  Checked := NOT Checked;
  ClicksDisabled := false;
end;

分类: delphi 标签: 6,093 次阅读
原文链接:http://www.wenhq.com/article/view_655.html
欢迎转载,请注明出处:亲亲宝宝
  1. 2010年9月20日13:58 | #1

    学习了

    [回复]

  2. 2010年9月21日14:54 | #2

    这是什么状况?

    [回复]

  1. 本文目前尚无任何 trackbacks 和 pingbacks.