两个窗体,如何关闭应用程序?(50分)

  • 主题发起人 主题发起人 xtaiss
  • 开始时间 开始时间
X

xtaiss

Unregistered / Unconfirmed
GUEST, unregistred user!
我有两个form(login和form1),login为登陆窗体,form1为用户界面窗体。
1、我将login作为主窗体,form1设为Available forms。在login窗体的“确定”按钮的onclick代码中,正确验证密码后,加入如下代码:
login.Destroy ; //释放登陆窗体
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
form1.ShowModal;
程序运行正常。但是点击form1窗体右上角的"X"关闭form1窗体(关闭整个应用程序)或点击一个加入close代码的按钮,都会报错,不知何故?(form1的onclose中没有加任何代码)
2、将form1作为main form,在运行form1前首先创建login窗体,不知怎么写代码,请教高手祥细指教!
 
{$R *.res}
begin
Application.Initialize;
LoginFrm := TLoginFrm.Create(nil);
LoginFrm.ShowModal;//登录窗体
//ProcessMessages

if loginfrm.ModalResult <> mrOK then
Exit;
Application.Title := 'P3&EXP与CMIS数据接口';
Application.CreateForm(TMainFrm, MainFrm);
MainFrm.StatusBar1.Panels[0].Text := '操作员 : '+LoginFrm.useredit.Text ;
MainFrm.StatusBar1.Hint := LoginFrm.useredit.Text ;
LoginFrm.Hide;
LoginFrm.Free;
Application.Run;
end.
//看懂了吗?
 
program test;

uses
Forms,
main in 'main.pas' {frmmain},
login in 'login.pas' {frmlogin};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(Tfrmmain, frmmain);
Application.CreateForm(Tfrmlogin, frmlogin);
frmlogin.Visible := false;
frmlogin.ShowModal;
Application.Run;
end.
 
以上二位,这样在关闭form1时,会不会再出错了?
 
其实完全可以这样。
将登陆窗口做为工程文件,在登陆成功的button1click事件中加入如下代码:
uses un_fom1
........
application.createform(tform1,form1);
form1.show;
然后在form1的Create事件中加入如下代码:
uses un_login;
........
login.free;
测试成功了。
 
我试一下,多谢大家!
试验成功后,为大家加分!
 
FromSplash:=TFromSplash.Create(Application);
FromSplash.Show;
FromSplash.Update;

Application.Initialize;
Application.Title := '';
Application.CreateForm(TFrm_Main, Frm_Main);
FromSplash.Hide;
FromSplash.Free
一直在用,还没有出现过错误!
一定要把FromSplash放到Available forms
 
1、to 来如风:
显示 mrOK 未定义。
2、to oldbow:
login窗体不能消失,main窗体不能显示出来。
3、sunny3super:
哪一个窗体做为主窗体呀?若login登陆窗体作为主窗体,则form1关闭时,会出错!
另外,“登陆窗口做为工程文件”是什么意思?
4、kirinma:
我是要用一个用户登陆窗体(需确认用户及密码后才显示form界面),不是一个一闪而过的splash.
 
算了,你也不要在工程文件中打注意了(当然可以在工程文件中实现),
就在主窗体的OnCreat或OnShow事件中创建和显示Login窗体吧!
 
登陆成功后可以先hide你的login窗口,等到关闭mainform 的时候 在同时关掉login 也行嘛
 
直接在窗体的关闭事件中加入application.terminate
 
Login Form:
uses
unit2;
{$R *.DFM}

procedure Tlogin.Button1Click(Sender: TObject);
begin
application.Createform(Tform1,form1);
login.Visible := false;
form2.ShowModal ;

end;

再Form1中:
uses
unit1;
{$R *.DFM}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
login.Close ;
end;
 
form1.ShowModal去掉
 
给大家加分了
 
后退
顶部