如何实现在一个窗体中点击按钮后关闭本窗体,打开新窗体?多谢了。好像比vb复杂多了。

解决方案 »

  1.   

    试一下这样:在你需要close的窗体里:
    定义里加:
      private
      const
        WM_JOINCLICK = WM_USER+2;
    close事件里写:
    PostMessage(FormMain.Handle,WM_JOINCLICK,0,StrToInt(self.RzEditAuctionNo.Text));主窗体里加:
    定义:
      private
      const
        WM_JOINCLICK = WM_USER+2;
      public
        procedure WndProc(var message: TMessage); override;加代码:
    procedure TFormMain.WndProc(var message: TMessage);
    begin
      if message.Msg=WM_JOINCLICK then begin
        创建你的新窗体
        exit;
      end;  inherited WndProc(message);
    end;新窗体没建完,这个窗体又要关,容易出现内存错误,上面做的原因是:老窗体在关闭是给主窗体发个消息,表示我要关了。这个消息是异步的。主窗体收到这个消息再去创建新窗体就没问题了。前一段我也是遇到这样的问题,所以才这样去解决。
      

  2.   

    非常感谢iuIRCClient(我是老鹰)。
    我是初学delphi,问题说的不清楚。
    准确是程序首先启动flash窗体,显示欢迎界面,当用户在欢迎界面中单击鼠标后,欢迎窗体被关闭,显示主窗体。
      

  3.   

    这种情况下,你的flash窗体就是起动窗体了,那你只能hide它了,不能关闭。
      

  4.   

    在项目文件里:var
      frmFlash: TFormFlash;
    begin
      frmFlash := TFormFlash.Create(Application);
      frmFlash.ShowModal;
      Application.CreateForm(TFormMain, FormMain);
      Application.Run;
    end;
      

  5.   

    frmSplash := TfrmSplash.Create(Application);
      frmSplash.Show;
      frmSplash.Update;
      Application.CreateForm(TDMDCM, DMDCM);
      Application.CreateForm(TLocalDAO, LocalDAO);
      Application.CreateForm(TfrmMain, frmMain);
      Application.CreateForm(TfmPopupTree, fmPopupTree);
      Application.CreateForm(TfmPopupKATree, fmPopupKATree);
      Application.CreateForm(TPersQueryForm, PersQueryForm);
      Application.CreateForm(TEmployerQueryForm, EmployerQueryForm);
      Application.CreateForm(TFrm_JSQuery, Frm_JSQuery);
      frmSplash.Close;
      frmSplash.Free;
      Application.Run;
    以上代码用于加载过程中显示frmSplash,加载完毕时,关闭frmSplash 窗体