Application.Terminate 怎么不起作用?(100分)

  • 主题发起人 主题发起人 wpw72
  • 开始时间 开始时间
W

wpw72

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TfrmMain.FormCreate(Sender: TObject);
begin
{显示登录界面}
if not assigned(frmLogin) then
frmLogin:=TfrmLogin.Create(Application);
frmLogin.Caption := '系统登录';
frmLogin.ShowModal;
{合法登录,对用户名、用户姓名、权限赋初值}
if gbolLogin then
begin
gstrOperatorCode:=dm.AdoTblOperator.FieldByName('Code').AsString;
gstroperatorName:=dm.AdoTblOperator.FieldByName('Name').AsString;
gstrOperatorAuthorize:=dm.AdoTblOperator.FieldByName('Authorize').AsString;
end else
begin
Application.Terminate;
end;
...
...
end;
如以上程序,当不是合法登陆时,Application.Terminate怎么不中止程序,同样问题出现在登录界面中,当按取消按钮时,有如下事件
procedure TfrmLogin.bbtnCancelClick(Sender: TObject);
begin
gbolLogin:=false;
Application.Terminate;
end;
当按了取消按钮后,程序仍向下执行,怎么回事啊,用F8调试时 Application.Terminat都执行了,但就是不退出程序。
 
begin
Application.Terminate; {这只不过是发送一个退出消息而已}
Exit; {加这句吧}
end;
 
最好用Halt
 
因为你是在窗体的创建过程中,程序是不会退出来的。
所以你不要写在procedure TfrmMain.FormCreate(Sender: TObject);
你把代码写在其它可以代替的地方吧
 
fanybul,谢谢您的回复,同样语句在别的类似程序中都正常,但在这程序中就不正常。
 
看看你的工程文件里是不是这样:
Application.Initialize;
Application.CreateForm(TfrmMain, frmMain);
Application.CreateForm(TfrmLogin, frmLogin); {如果是这样,请把这一行注释掉}
Application.Run;

应该是这儿的问题,frmLogin如果是你手工添加的窗体,默认的情况下,程序启动时会CreateForm所有窗体,而你在主窗体的CreateForm调用Application.Terminate,程序依然会执行Application.CreateForm(TfrmLogin, frmLogin);和 Application.Run;
 
电脑中彩了
 
网中戏,你这是不负责任的说法,kk2000说加上exit,我试了下,运行正常了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部