问题是这样的,就是登录窗口
在project的view source里是
form2.showmodal;
然后
procedure tform2.close()
begin
application.terminate;
end
当关闭的时候,有一瞬间的主窗口会闪一下。
虽然有人教application.showmainform:=false;但如果是有连续几个form都showmodal的话,例如先弹出一个设置窗口,再弹出登录窗口,设置、登录完毕之后先来主窗口的话,如果在设置那一步已经terminate,登录窗口还是会一闪而过试着用了exit,还是不行(我把exit加在close里面)
那么应该怎么弄才达到我的要求呢?请指教,谢谢回复

解决方案 »

  1.   

    procedure tform2.close() 
    begin 
      application.MainForm.WindowState := wsMinimized;
      application.terminate; 
    end 
      

  2.   

    回楼上
    你这个方法只适合form是自动创建的,有没有适合手动创建,或者通用一点的方法?
    我的连续showmodal的form连变量名都没有
      

  3.   

    登录窗体不是你那么做的
    program Project1;uses
      Forms,
      Controls,
      Unit1 in 'Unit1.pas' {frmMain},
      Unit2 in 'Unit2.pas' {frmLogin};{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TfrmMain, frmMain);
      Application.CreateForm(TfrmLogin, frmLogin);
      if frmLogin.ShowModal = mrCancel then Exit;
      Application.Run;
    end.
    frmLogin在登录成功后给ModalResult赋值为mrOk,取消是赋值为mrCancel就行了
      

  4.   

    感谢高人指点小弟
    但是,只要主窗口里面包含ado数据控件或indy客户端组件的话,就会报错EAccessViolation
      

  5.   

    Terminate calls the Windows API PostQuitMessage function to perform an orderly shutdown of the application. Terminate is not immediate.Terminate is called automatically on a WM_QUIT message and when the main form closes.
      

  6.   

    那有什么办法是shutdown immediately的?
    exit会在“主窗口使用ado数据控件”的情况下raise EAccessViolation
    只要拖入一个ado控件,即使你不设定什么都好,也会报错
      

  7.   

    想什么都不管,立即退出,可以用Halt
      

  8.   

    我手动把ado组件释放了,问题算是解决了