DELPHI死循环,求救!

首先申明,在DELPHI方面我才开始学,现在遇到一个重大问题:我用下面的一个checkbox来实现勾选效果,但是在运行过程中进入死循环,死循环几秒后出现什么“EStack... 首先申明,在DELPHI方面我才开始学,现在遇到一个重大问题:我用下面的一个checkbox来实现勾选效果,但是在运行过程中进入死循环,死循环几秒后出现什么“EStackOverflow”,郁闷死了,看起来代码并没有错,为什么会出现死循环呢?请高手指教!我以前学过VFP的,这样的代码绝对不会有死循环的。

这是全部代码:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
xz1: TCheckBox;
Button1: TButton;
procedure xz1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.xz1Click(Sender: TObject);
begin

if xz1.checked=false then //xz1是一个checkbox
begin
xz1.caption:='111111';
xz1.checked:=true;

end
else if xz1.checked=true then
begin
xz1.caption:='222222';
xz1.checked:=false;

end;

end;

procedure TForm1.Button1Click(Sender: TObject); //button1是一个关闭按扭
begin
close;
end;

end.

请高手说明原因啊,不胜感激!
展开
 我来答
jxsbb
2007-09-13 · TA获得超过383个赞
知道小有建树答主
回答量:314
采纳率:100%
帮助的人:392万
展开全部
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if checkbox1.Checked = false then
checkbox1.Caption:='aa';
else
checkbox1.Caption:='bb';
end;
原因:checkbox1.checked:=true;本身就是向checkbox1发送一个onclick消息,当你在if xz1.checked=false then部分有这一部分代码,编辑器还没有执行完else部分的代码,就又接到一个checkbox1click事件;而第二次接到的消息是执行else部分的代码,又出现一个checkbox1.checked:=false;又一个onclick件,如此循环而已。
当编辑器对你这个可怕的代码感到厌烦时,“EStackOverflow”,罢工!
EStackOverflow意思是栈溢出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
女娲软件
2007-09-13 · TA获得超过143个赞
知道小有建树答主
回答量:166
采纳率:0%
帮助的人:155万
展开全部
先设置:xz1.onclick:=nil;
然后进行处理,处理后,再设置:xz1.onclick := xz1Click;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式