应该是很简单的问题(50分)

  • 主题发起人 主题发起人 Alix
  • 开始时间 开始时间
A

Alix

Unregistered / Unconfirmed
GUEST, unregistred user!
如何改变checkbox的checked属性,而不触发checkbox的onclick事件 ? 急
 
直接写 checkbox.checked:=true or false
 
不明白你的意思,糊涂中。。。。。。
 
按楼上说的,这样就是会触发onclick呀, 高手求救
 
首先选择默认属性模式:
在事件管理器里能看到,将CheckBox.State属性设为cbUnChecked模式
然后在程序中可以动态设置:
CheckBox.Checked:=True 或 False;
 
能不能讲明你的用意?
 
具体来说是这样的, 一旦我点了button1,delphi就会自动的触发CheckBox1Click事件,
现在我问的是能不能,我点了button1,不自动触发CheckBox1Click事件
procedure TForm1.Button1Click(Sender: TObject);
begin
checkbox1.Checked:=not checkbox1.Checked
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
showmessage('onclick');
end;
 
我还是找不到方案。
 
用两个checkedbox,一个默认true,另一个默认False。进行显示转换
 
那我要多20多个checkbox了, 好大啊?
 
首先屏蔽,然后设置,最后恢复
procedure TForm1.Button1Click(Sender: TObject);
var
lEvent: TNotifyEvent;
begin
lEvent := CheckBox1.OnClick;
CheckBox1.Checked := True;
CheckBox1.OnClick := lEvent;
end;
 
这样就更好了。[:D]
procedure TForm1.SetCheckState(var aCheckBox: TCheckBox; aChecked: Boolean);
var
lEvent: TNotifyEvent;
begin
lEvent := aCheckBox.OnClick;
CheckBox1.Checked := aChecked;
aCheckBox.OnClick := lEvent;
end;
 
先把CheckBox的OnClick事件设为nil
执行完你的程序,再重新设置CheckBox
的OnClick事件:
TForm1.Button1Click(Sender: TObject);
var
LOnClick: TNotifyEvent;
begin
LOnClick := CheckBox1.OnClick;
CheckBox1.OnClick := nil;
checkbox1.Checked :=not checkbox1.Checked;
CheckBox1.OnClick := LOnClick;
end;
 
改变checkbox的checked属性,而不触发checkbox的onclick事件 ?

不知还要OnClick事件干什么?
 
利用每个checkbox的Tag
Tag=1 表示true
Tag=0 表示False
Button敲后改变Tag,在OnClick中通过判断Tag来决定是否执行你的代码!

 
本人常用的办法是在type中声明一个开关变量:kg : boolean;
在button1的onclick事件中这样写:
...
begin
....
kg := false;
checkbox1.checked := true;//or false;
kg := true;
...
end;

在checkbox1的onclick事件中这样写
...
begin
if not kg then exit;
...
end;

这样可以保证在button1.onclick中不执行checkbox1.onclick
 
同意楼上的!!
这个好像在Checked上做文章可不行。
应该在OnClick里来判断才可以!!!!

 
多谢谢大家提拔, 分少真的不知道怎么分
 
后退
顶部