我做了几个登录窗口,都不行,登录后,主窗体显示,登录窗体却不消失,因为MAINFORM。SHOWMODAL,后关闭登录窗体,必须关主窗体后,才能关登录窗体,用MAINFORM。SHOW又不行,望各位指教。

解决方案 »

  1.   

    在主窗口的OnCreate事件中,Create一个登录窗口并ShowModal,根据登录的验证情况,返回不同的ModalResult,在主窗口中判断如果ModalResult为mrOk,就继续后面的操作,如果返回其他,就PostQuitMessage(0)告知主窗口关闭,并跳出当前函数,不必执行后续代码。也就是说,不要将登录窗体作为主窗体。
      

  2.   

    给你个例子:
    unit wLogin;interface…… ……
    …… ……
    function LoginFrmShow: Integer;implementationuses uDM;{$R *.dfm}function LoginFrmShow: Integer;
    begin
      with TLoginFrm.Create(nil) do
      begin
        try
          Brush.Style := bsClear;
          Result := ShowModal;
        finally
          Free;
        end;
      end;
    end;program YourProgram;
    uses
      Forms,
      wMain in 'wMain.pas' {MainFrm},
      wLogin in 'wLogin.pas' {LoginFrm};{$R *.res}
    begin
      Application.Initialize;    if LoginFrmShow = 1 then
        begin
          Application.CreateForm(TMainFrm, MainFrm);
          Application.Run;
        end;