delphi if语句 疑问
delphi吧
全部回复
仅看楼主
level 1
if checkbox1.State=cbunchecked then begin checkbox1.caption:='选中'; checkbox1.state:=cbchecked; end else if checkbox1.State=cbgrayed then begin checkbox1.caption:='未选中'; checkbox1.state:=cbunchecked; end else if checkbox1.State=cbchecked then begin checkbox1.caption:='灰色'; checkbox1.state:=cbgrayed; end end;
怎么会发生 死循环呢?
if 与 else 不是选其一的吗?
同问case 语句,如果换成case语句 通用是死循环;
2012年12月11日 03点12分 1
level 1
if checkbox1.State=cbunchecked then
begin
checkbox1.caption:='选中';
checkbox1.state:=cbchecked;
end
else if checkbox1.State=cbgrayed then
begin
checkbox1.caption:='未选中';
checkbox1.state:=cbunchecked;
end
else if checkbox1.State=cbchecked then
begin
checkbox1.caption:='灰色';
checkbox1.state:=cbgrayed;
end
end;
2012年12月11日 03点12分 2
level 13
难道你放在了循环里?
2012年12月11日 05点12分 3
level 7
你干吗要改变状态 状态改变 重新激发本事件 这样每次都停不下来 记得老和尚给小和尚讲故事吗?永远都讲不完
2012年12月11日 06点12分 4
level 9
你的代码是写在checkbox1的onclick事件里的吧?
当你改变checkbox1的state属性时,最终调用的是TCustomCheckBox.SetChecked(Value:Boolean)方法,而该方法最后会触发Click事件,这样就形成了反复改变state属性,反复触发Click事件,于是死循环产生了。
为什么不用checkbox1.checked呢?只要设置true或false即可。
2012年12月13日 02点12分 5
1