这个checkbox有点讨厌。

westwind_1 2001-09-05 11:08:11
一段代码:
procedure Tform1.Checkbox1click(Sender:Object);
begin
showmessage('hello');
end;

procedure Tform1.button1click(Sender:Object);
begin
if checkbox1.checked then
checkbox1.checked:=false
else checkbox1.checked:=true;
end;

run了以后,点击button1,checked变了。但是hello也蹦出来了。check的改变却激活了checkbox1click过程。当然把hello写到checkbox1mouseup中可以避免。但是不知道又没有别的办法。我想改写checkbox控件,但是没成功。那位高手能帮我想想改怎么写,先谢了。
...全文
77 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
EP外星人 2001-09-07
  • 打赏
  • 举报
回复
procedure Tform1.Checkbox1click(Sender:Object);
begin
if checkbox1.checked then showmessage('hello');
end;

这么写难道不行吗?

水之手 2001-09-06
  • 打赏
  • 举报
回复
都是这样的,VB中也是如此,用变量或控件状态屏蔽是个好办法。
sunchain 2001-09-06
  • 打赏
  • 举报
回复
//临时屏蔽 checkbox的事件触发
interface
...
Tform1=class(TForm)
...
private
isBtnClick:boolean; // 标志是否按钮产生的事件
...


procedure Tform1.Checkbox1click(Sender:Object);
begin
if not isbtnClick then
showmessage('hello')
else
isBtnClick:=False; //关闭标志
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
isBtnClick:=True;
if checkbox1.Checked then
checkbox1.Checked:=False
else
checkbox1.Checked:=True;
end;
EP外星人 2001-09-06
  • 打赏
  • 举报
回复
procedure Tform1.button1click(Sender:Object);
begin
CheckBox1.Onclick:=nil;
checkbox1.Checked:=not checkbox1.Checked;
CheckBox1.Onclick:=Checkbox1click;
end;
It's Ok

EP外星人 2001-09-06
  • 打赏
  • 举报
回复
procedure Tform1.button1click(Sender:Object);
begin
checkbox1.Checked:=not checkbox1.Checked;
if checkbox1.Checked then
CheckBox1.Onclick:=Checkbox1click
else
CheckBox1.Onclick:=nil;
end;

westwind_1 2001-09-06
  • 打赏
  • 举报
回复
钱舜兄说得不错,我试了,挺好,多谢了。但是楼上的这位大哥的办法好像还不满意,不过也谢谢了,兄弟我初到贵地,承蒙各位照顾,以后还希望能多多帮助。
enlightenment 2001-09-05
  • 打赏
  • 举报
回复

procedure Tform1.Checkbox1click(Sender:Object);
begin
if not checkbox1.checked then showmessage('hello');
end;

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧