有两个窗体form1 (其中有button1)
          form2,
  在form1的button1 中实现关闭form1,打开form2的功能 form1.close; form2.show 但实际上form1关闭了而form2未打开,后来把form1.close该为form2.free成功,但此时程序未正常退出,只有用program reset才能退出
   请问是为什么?

解决方案 »

  1.   

    form1是主窗体吗?
    在program
    frm_login:=tfrm_login.Create(application);
      frm_login.ShowModal;
      if frm_login.close_flag<>1 then
      begin
        frm_module.Free;
        halt;
      end;
      //screen.Cursors[-11]:=screen.Cursors[crmycursor];
      screen.Cursors[-17]:=screen.Cursors[crmycursor];
      application.Title:='资料库管理系统';
      frm_interface:=Tfrm_interface.Create(application);
      frm_interface.prog_label.Caption:='';
      

  2.   

    先showFORM2
    然后再关闭FORM1
      

  3.   

    主次弄错了FORM1为MAIN
    ONSHOW里面写上FORM2.SHOW;这样先显示Form2登录窗口,关闭form2,form1就出来了结贴了
      

  4.   

    在form1中的onshow事件中写from2.showmodal 写个条件判断from2中的登陆条件是否通过,yes---form2.close.  no---form2.close 并在form2中的onclose中写上form1.colse
      

  5.   

    如果form1是主窗体,不能关闭。如果关闭form1,则form2也会被关闭。
    可以做一个显示各功能模块的主窗体,登陆具体的功能模块时在调用登陆窗体(既你原来的
    FORM1),你原来的FORM2改成FORM3。然后就可以实现你的想法了
      

  6.   

    没有搞清主窗体。
    主窗体关闭了,程序都结束了。你可以动态创建登陆窗体。var
      frmFlash : TfrmSplash;         //最开始显示的Splash窗体。begin
      Application.Initialize;  Screen.Cursor := crHourGlass;
      frmFlash := TfrmSplash.Create(Application);
      try
        frmFlash.Show;
        frmFlash.Update;    Application.CreateForm(TDataMod, DataMod);
      Application.CreateForm(TfrmMDIMain, frmMDIMain);
      Application.CreateForm(TfrmLogon, frmLogon);     //登陆窗体  finally
        Screen.Cursor := crDefault;
        frmFlash.Close;             //在Splash窗体的close事件中有frmLogon.showmodal,
                                    //登陆窗体就出来了,此时Splash窗体还没关,主窗体
                                    //还没出现,就实现了登陆功能。
        frmFlash.Free;
        Application.Run;
      end
    end.
    ******************************************************************
    兄弟能看出来代码实在哪里吧。这是一种方法。