现在我做的是个登陆窗口,进行验证登陆。我把好多初始化的工作都在登陆窗口的“确定”按钮中做了,如果输入的密码三次了,然后就应用程序终止,可是应用程序,并没有终止掉!
program project;
uses
begin
CreateMutex(nil, false, 'project');
创建多个窗体;
loginFrm.showmodal; //在这以后,就交给登陆窗体的OK按钮来做事了,进行初始化等
end;
----------------
unit login
uses
。。
procedure btnOKClick(sender :tobject)
begin
if loginCount<4 then
begin
在数据库查询,是否正确;
if 正确 then 初始化;
else
if loginCount=3 then application.terminate;
else
showmessage('输入三次机会,现已'+IntToStr(loginCount)+'次');
end;
if
end。
就是上面的application.terminate;不能终止掉程序,可能是一些资源没释放掉,不知道怎么搞更好些,还有在login窗体里搞这些东西,是不是不好?急!!
program project;
uses
begin
CreateMutex(nil, false, 'project');
创建多个窗体;
loginFrm.showmodal; //在这以后,就交给登陆窗体的OK按钮来做事了,进行初始化等
end;
----------------
unit login
uses
。。
procedure btnOKClick(sender :tobject)
begin
if loginCount<4 then
begin
在数据库查询,是否正确;
if 正确 then 初始化;
else
if loginCount=3 then application.terminate;
else
showmessage('输入三次机会,现已'+IntToStr(loginCount)+'次');
end;
if
end。
就是上面的application.terminate;不能终止掉程序,可能是一些资源没释放掉,不知道怎么搞更好些,还有在login窗体里搞这些东西,是不是不好?急!!
解决方案 »
- 纠结。
- 离职成功,下周新工作啦,哈哈~~~~~~~~~~~~~~~
- fastreport 的打印问题
- IMAGE漫游,如何移动Image窗口的图片内容,使能看到未显示的部分?
- 使用ShellExecute要调用什么单元?
- ado下事务[SQL SERVER]为何会启动失败?
- 100分。送分,如果我把一个表的某些记录做成一个标签
- 闲聊一下...其实系统分析师是做什么工作的...要懂得什么知识才能做这个职位...待遇如何?
- 哪位高手帮一下忙啊.就是把图片(jpg,bmp)转换成十六进制,怎么转换啊??有点急,先谢谢各位了.
- 甚急:有没有把一个form 当成一个frame嵌入当前窗体的方法呀!甚急!
- 急!!★★Fastreport明细表的问题★★
- 如何将EXCEL导进Dbgrid中去? 如何将EXCEL导进access中去?
然后,你这个地方不需要application.terminate,只需要根据密码的正误来决定modalresult,然后在工程文件中根据showmodal返回的结果来决定是继续程序,还是中止。
CloseHandle(hMutex); // close the mutex handle
if loginCount=3 then application.terminate;//--如果用了这个,前面的if loginCount<4 then 就不用了var
logincount:byte=0;
procedure btnOKClick(sender :tobject)
begin
在数据库查询,是否正确;
if 正确 then
begin
初始化;
loginsuccess=true;
modalreslut:=mrok;
end
else
begin
inc(logincount);
if logincount=3 then
begin
showmessage('登录失败!');
modalresult:=mrcancle;
end
else
showmessage('输入三次机会,现已'+IntToStr(loginCount)+'次');
end;
begin
初始化;
loginsuccess=true;
modalreslut:=mrok;
end其实最初的时候,我就是不知道modalreslut:=mrok;才把所有的初始化代码写到确认按钮的,知道这个我就可以,在应用程序中调用返回值啦
if loginFrm.showmodal<>mrOk then
begin
application.terminate;//
end;
计数还是要在LoginFrm里面完成的,如果超过三次失败或者取消登陆那么就返回mrCancel否则如果登陆成功就返回mrOk,在project中根据返回值决定是Terminate还是进行数据的初始化...
这是比较正统的思路...
在delphi工具条上“RUN”-->"Parameters",这个窗口在调试的时候,怎么使用?谢谢:)