我用Delphi编了一个简单的登陆窗口,这是登陆窗口的代码,登陆和退出都正常,但将登陆窗口直接叉掉后,

2025-05-14 09:36:30
推荐回答(5个)
回答1:

为登陆单独创建一个窗体,然后在工程代码里判断是否已经登陆,而不是放到窗体本身的代码里,具体例子参见http://zhidao.baidu.com/question/147238475.html
或者
http://hi.baidu.com/flashdata/blog/item/f7255a43c746f3119313c6b6.html

回答2:

procedure TForm2.Button1Click(Sender: TObject);
begin
if (Trim(Edit1.Text)='@@@@')and(Trim(Edit2.Text)='****') then
begin
I := 1;
close;
end
else
begin
showmessage('用户名或密码错误。');
I := 0;
Exit;
end;

end;

回答3:

1. 主窗口就会跳出来,个人觉得可能最后那个formclose有问题

据个人的经验,这个跟这个登录窗口是怎么关闭的关系不大,最主要的原因在于:主窗口在未登录成功时不应该创建。

如果你在登录窗口建立的时候,也建立了主窗口,那么最终的效果就会象你遇到的那样。这是个顺序问题:先登录 -> 成功 -> 调用主窗口。

以下是示例代码,内容应该保存在你的工程文件里,因为不同单元窗口的生成操作主要是在工程文件(*.dpr)里面:

begin
Application.Initialize;
Application.CreateForm(TDM, DM);
with TLoginFrm.Create(nil) do
begin
ShowModal; //显示登录窗体
if Logined then
begin
Application.CreateForm(TMainFrm, MainFrm);
MainFrm.Show;
MainFrm.UserName :=UserName;
end;
Free;
end;
Application.Run;
end.

2. FormClose和FormCloseQuery的区别:

其实比较好理解FormClose比FormCloseQuery少了个Query,也就是FormClose事件是响应窗口关闭,而FormCloseQuery是在响应窗口关闭 之前 ,这个区别以软件中的效果为例:

FormCloseQuery 达到的效果:

比如Word中的文件内容被修改了,然后你没保存就退出,那么就会弹出一个对话框,告知你文件内容已修改,询问是不是保存内容,编写这段功能代码就要在FormCloseQuery 这个事件响应中编写,如果按取消,还可以返回软件继续。

回答4:

直接把代码写在dpr文件中,if loginform.modelresult<>mrok then exit就可以了

回答5:

............................好简单的登录窗口