我的MDI应用程序
begin
  Application.Initialize;
  Application.CreateForm(TFrmMain, FrmMain);
  Application.Run;
end.FrmMain.FormCreate(Sender: TObject)
begin
  Application.CreateForm(TFrmDataModule, FrmDataModule);
  if FrmDBConfig.ModalResult=mrok then 
     self.show;
end;FrmDataModule.FormCreate(Sender: TObject)
begin
  if 数据连接失败 then
  begin
     Application.CreateForm(TFrmDBConfig, FrmDBConfig);
     FrmDBConfig.showModal;          //弹出连接配置窗口
  end;
end;FrmDBConfig.BtnSave(Sender: TObject)
begin
  完成数据连接配置
  ..........
  ModalResult:=mrok;
end;FrmDBConfig是不是MDI的子窗口,在我完成数据联军诶点保存按钮时配置完成了,可是程序为什么会中止,谁能告诉我哪里出问题了?

解决方案 »

  1.   

    FrmDBConfig需要设置窗体的FormStyle属性为fsMDIChild后才为MDI子窗口。
      

  2.   

    FrmMain.FormCreate(Sender: TObject)
    begin
      Application.CreateForm(TFrmDataModule, FrmDataModule);
      if FrmDBConfig.ModalResult=mrok then 
         self.show;
    end;这一段有问题,如果刚开始FrmDBConfig.ModalResult<>mrok那么主程序就中止了,应该把显示主窗口的代码放在 FrmDBConfig.BtnSave(Sender: TObject)里面就OK了!
      

  3.   

    FrmDBConfig需要设置窗体的FormStyle属性为fsMDIChild后才为MDI子窗口。
      

  4.   

    谢谢各位的帮助,刚才打错了FrmDBConfig是普通的窗口,不是MDI的子窗口!大家快帮帮忙吧
      

  5.   

    //把FrmMain.FormCreate和FrmDataModule.FormCreate的内容合并如下:
    FrmMain.FormCreate(Sender: TObject)
    begin
      Application.CreateForm(TFrmDataModule, FrmDataModule);
      try
        连接数据库;
      except
         Application.CreateForm(TFrmDBConfig, FrmDBConfig);
         if FrmDBConfig.showModal = mrOK then          //弹出连接配置窗口
           self.show;
      end;
    end;