为什么只循环一次!

bolly 2001-07-26 09:45:31

MainButton in 'MainButton.pas' {MainForm},
login in 'login.pas' {LoginForm};

{$R *.RES}

begin
Application.Initialize;
LoginForm:=TLoginForm.Create(Application);
LoginForm.ShowModal;
if not LoginFlag then
exit
else
begin
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TLoginForm, LoginForm);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TDataModule1, DataModule1);
Application.Run;
end;
end.






var
LoginForm: TLoginForm;
LoginFlag:boolean;
i:integer;

implementation

uses MainButton;

procedure TLoginForm.BitBtn2Click(Sender: TObject);
begin
with AdoQuery1 do
begin
close;
sql.clear;
sql.Add('select * from userid where userid=''' + userid.text + '''');
sql.add('and pwd=''' + userpwd.text + '''');
open;
if eof and bof then
begin
if i=3 then
begin
MessageDlg('你已經登錄' + inttostr(i)+'次!', mtWarning, [mbYes], 0);
LoginFlag:=False;
exit;
end;
MessageDlg('你已經登錄' + inttostr(i) +'次!還有' + inttostr(3-i) + '次機會!', mtWarning, [mbYes], 0);
i:=i+1;
end
else
LoginFlag:=True;
end;

end;
...全文
145 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
delphi_user 2001-07-27
  • 打赏
  • 举报
回复
把i声明成TLoginForm的公有变量。然后创建对象后对他赋值为0
然后就可以了。

MainButton in 'MainButton.pas' {MainForm},
login in 'login.pas' {LoginForm};

{$R *.RES}

begin
Application.Initialize;
LoginForm:=TLoginForm.Create(Application);
LoginForm.i:=0;
LoginForm.ShowModal;
if not LoginFlag then
exit
else
begin
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TLoginForm, LoginForm);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TDataModule1, DataModule1);
Application.Run;
end;
end.






bolly 2001-07-27
  • 打赏
  • 举报
回复
我已經搞定了,謝謝各位!
還有一步大家沒有考慮吧! 那就是要把 bitBton2的ModalResult設定為mrNone
再次謝謝各位
szkingrose 2001-07-27
  • 打赏
  • 举报
回复
在此過程執行時就進行 i:=i+1 ;
bolly 2001-07-27
  • 打赏
  • 举报
回复
阿海同志,還是不行, 幫忙!
lanni 2001-07-27
  • 打赏
  • 举报
回复
在Initialization 中定义I的值
WuHeHai 2001-07-26
  • 打赏
  • 举报
回复
又错了
if not (LoginForm.ShowModal = mrOK) then
WuHeHai 2001-07-26
  • 打赏
  • 举报
回复
有一点错了
if not LoginForm.ShowModal = mrOK then
WuHeHai 2001-07-26
  • 打赏
  • 举报
回复
MainButton in 'MainButton.pas' {MainForm},
login in 'login.pas' {LoginForm};

{$R *.RES}

begin
Application.Initialize;
LoginForm:=TLoginForm.Create(Application);
//修改
if LoginForm.ShowModal = mrOK then
exit
else
begin
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TLoginForm, LoginForm);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TDataModule1, DataModule1);
Application.Run;
end;
end.



// 创建时设置I := 0;


procedure TLoginForm.BitBtn2Click(Sender: TObject);
begin
with AdoQuery1 do
begin
close;
sql.clear;
sql.Add('select * from userid where userid=''' + userid.text + '''');
sql.add('and pwd=''' + userpwd.text + '''');
open;
if eof and bof then
begin
if i=3 then
begin
MessageDlg('你已經登錄' + inttostr(i)+'次!', mtWarning, [mbYes], 0);
//LoginFlag:=False;
//Exit
//添加
ModalResult := mrCancel;
Close;
end;
MessageDlg('你已經登錄' + inttostr(i) +'次!還有' + inttostr(3-i) + '次機會!', mtWarning, [mbYes], 0);
i:=i+1;
end
else begin// 修改
ModalResult := mrOK;
Close;
end;
end;


Mark_zheng 2001-07-26
  • 打赏
  • 举报
回复
解决了吗??
Barbarian 2001-07-26
  • 打赏
  • 举报
回复
估计你的BitBtn2的ModalResult<>mrNone,以致于调用BitBtn2Click时登录窗口已经完成了
ShowModal的过程
Mark_zheng 2001-07-26
  • 打赏
  • 举报
回复
哦!这个,你要先设计一个变量 tmpint,初始值为1,然后每次BUTTON1按下后,tmpint:=tmpint+1 然后判断 tmpint是否大于3,如果为3 就FORM。CLOSE

我觉得你完全可以不用循环啊。
bolly 2001-07-26
  • 打赏
  • 举报
回复
我是一個密碼驗證程序!
允許你有三次的機會,如果三次都不成功,則退出.
大哥幫忙吧! 我一定給分, 謝謝!
xzgyb 2001-07-26
  • 打赏
  • 举报
回复
是不是应该在i:=i+1后在调用一次BitBtn2.Click
xzm2000 2001-07-26
  • 打赏
  • 举报
回复
没有看到哪有循环语句啊???

5,388

社区成员

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

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