根据你的需求而定,如果当你的mainform show出来以后 不需要用到登陆窗体,那就Free掉吧!  

解决方案 »

  1.   

    main的CM_SHOWINGCHANGED消息处理登录窗口。避免“闪”一下。
      

  2.   

        既然登陆窗体不是主窗体,那我是不是可以这样理解,你的程序一运行本来是应该显示主窗体的,但需要先登陆,所以把主窗体给先隐藏了,登陆成功再显示,这样的话你登陆成功可以直接free了登陆窗体;
        
        如果程序启动顺序不是我上面说的那样,那你所谓的主窗体(启动窗体)应该是登陆窗体了,这样的话,你在登陆成功以后可以发消息给要显示的窗体,然后登陆窗体free了,为了不让显示的窗体在不登陆的情况打开,你需要按你的要求传递参数给显示窗体,然后显示窗体判断命令行是否有参数来进行是否运行?不知道这样回答可以不!
      

  3.   

    这个问题我也想知道要怎么处理啊。
    目前我有两个方法,但是都不怎么好。
    1.登陆窗体为主窗体,程序一启动就出现登陆窗体,登陆成功后,登陆窗体HIDE,然后主界面show现来。这样子做有一个不好的地方,就是在主界面最小化的时候不会最小化到任务栏,而是在桌面的左下角。2.主界面作为主窗体,启动程序时主界面先hide,登陆窗体show出来,登陆成功后,主界面show,然后登陆窗体CLOSE,这样子做的话,在登陆时如果直接按退出,,程序会闪现主界面,再退出。而不是直接退出。高人指点一下要怎么做啊?
      

  4.   

    写在工程文件中
    var
      Login: Boolean;
    begin
      Application.Initialize;
      with TLoginForm.Create(Application) do
      try
        if ShowModal = mrok then login := True
        else
          login := False;
      finally
        Free;
      end;  if Login then
      begin
        Application.Title := '综合信息管理系统';
        Application.CreateForm(TMainForm, MainForm);
        Application.Run;
      end;
      

  5.   

    我一般都是用MDI窗體,登錄窗體是子窗體,我在主窗體的create()事件中顯示登錄窗體,登錄成功后登錄窗體close()。
      

  6.   

    写个类方法 调用类方法 判断窗体返回值 class function Loginform:Boolean;
    beginend;
      

  7.   

        我是在主窗体的OnCreate事件中登录的,登录成功则顺序执行,不成功则终止程序,在OnCreate事件中主窗体是尚未显示的,达到隐藏主窗体的目的.
    procedure TMailForm.FormCreate(Sender: TObject);
    begin
    pswForm:=TpswForm.Create(self);//建立登录窗体
     if pswForm.ShowModal <> mrOk then
       begin
        pswForm.Free;
        Application.Terminate;
       end;
    end;
    在登录窗pswForm中密码正确则返回 ModalResult := mrOk,保证主窗体顺序执行
      

  8.   

    在工程文件中处理,先创建主窗体,再创建登录窗体并模式显示,验证用户名和密码在登录窗体中完成,如果验证通过,就继续运行,否则就中止运行。  Application.Initialize;
      Application.CreateForm(TMainForm, MainForm);
      Application.CreateForm(TDataForm, DataForm);
      Application.CreateForm(TLoginForm, LoginForm);
      if LoginForm.ShowModal = 1 then //mrOK
      begin
        LoginForm.Free;
        Application.Run;
      end
      else
      begin
        LoginForm.Free;
        Application.Terminate;
      end;