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

解决方案 »

  1.   

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

  2.   

    给你个例子: 
    unit wLogin; interface …… …… 
    …… …… 
    function LoginFrmShow: Integer; implementation uses 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; 
     
      

  3.   

    两个窗体:FrmMain,FrmLogin
    在FrmMain的OnShow事件里写:FrmLogin.showModel;这样就先显示登陆窗口了,
    关闭登陆窗口后主窗口就会显示出来,但要记录登陆是否成功,就可以在FrmLogin里声明一个全局变量,判断是否登陆成功,因为在取消登陆时关闭登陆窗口是整个工程都要关闭,而不应该再显示主窗口出来。
      

  4.   

    主窗体的FormShow事件里写:
    if loginform.showmodal<>mrOK then
     application.Terminate;loginform中,如果登录成功,设置modalresult:=mrOK,就可以了
      

  5.   

    用户登录方案  , 
    http://book.csdn.net/bookfiles/662/10066220894.shtml 
    里面说的很详细...
      

  6.   

    用户登录方案  , 
    http://book.csdn.net/bookfiles/662/10066220894.shtml 
    里面说的很详细...