splash+password+mainForm,它们几个的包含顺序处理?能不能详细地说一下怎么这三个form?

解决方案 »

  1.   

    偶的习惯:
    with TSplash.Create do
    try
      // ...
      // 创建MainForm
      // ...
      // 创建LoginDialog
      // ...
      if LoginDialog.Execute then
        // Run
      else
        // Destroy;
    finally
      Free;
    end;
      

  2.   

    Application.Initialize;
      Application.CreateForm(TFDataModule, FDataModule);
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        创建数据模块
      FLogin := TFLogin.Create(Application);
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       创建Login窗口
       这里面可以调用数据模块中的验证密码的函数,
      FLogin.ShowModal;
       
      if FLogin.ModalResult = mrOK then
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       判断是否可以登录
      begin
        FLogin.Hide;
        FLogin.Free;
      end else
        Application.Terminate;  
      Application.CreateForm(TFMainForm, FMainForm);
       ^^^^^^^^^^^^^^^^^^^^^^^^^^
       再创建主窗口
      Application.Run;
    RegardsePing
      

  3.   

    splashform和passwordform其实差不多,
    做passwordform的话,建一个新的窗口,将它的构造过程(Application.CreateForm(TFormPassword,FormPassword))重工程文件(dpr)中删除,
    然后在formmain的oncreate中写:
    var
      FormPassword:TFormPassword;
    begin
      Show();//显示主窗口
      FormPassword:=TFormPassword.Create(self);
      try
        FormPassword.ShowModal();
        if FormModal.ModalResult<>mrOK then
          Application.Termate;
      finally
        FormPassword.Free;
      end;
    end;并在Formpassword的确定按钮的click事件中判断password,如果不符合,则返回
    Modalresult:=mrCancel;至于,和formpassword和FormSplash差不多,也将自动构造去掉,并把窗体pos设为topmost,不同的是用Form.Show来显示该窗口,显示完后,可以作程序的初始化工作,之后再free掉它,如果期间想让主窗口无法相应用户操作,可以用FormMain.Enabled:=false;完了后再设回来。
      

  4.   


      某程序中工程文件中的一段:
      .....
      begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      .....
      frmsplash:=Tfrmsplash.Create(Application);{Create创建闪现窗口对象}
      frmsplash.Show;
      frmsplash.Update;
      Application.CreateForm(TForm1, Form1);
      frmsplash.Hide;
      frmsplash.Free;  loginform:=Tloginform.create(Application);{Create创建登录窗口对象}
      loginform.show;
      loginform.Update;
      while i=true do
      begin
      loginform.Hide;
      loginform.free;
      end;  Application.Run;
      

  5.   

    to silverwonder(刷卡太快请重刷) while i=true do
      begin
      loginform.Hide;
      loginform.free;
      end;为什么要用循环 ? if returnResult=mrCancel then 
    loginform.hide; loginform.free; end;