本要在主窗口中打开一个窗体,代码如下
procedure TFrmArchivesManager.BitUpdateArchivesClick(Sender: TObject);
begin
    try
       UserCode:=adostandard.fieldbyname('f_sfzhm').value;
       FrmArchivesManager.tag:=1;   //1±íʾΪÐÞ¸Ä
      FrmAddMrchives:=TFrmAddMrchives.create(self);
       FrmAddMrchives.showmodal;
    finally
       FrmAddMrchives.Free ;
    end;
end;但FrmAddMrchives窗体中如ModalResult:=mrCancel退出后会也退出了主窗体同样在此主窗体中打开另一个窗体时又不会发生以上情况procedure TFrmArchivesManager.BitSearchArchivesClick(Sender: TObject);
begin
    try
       FrmMrchivesSearch:=TFrmMrchivesSearch.create(self);
       FrmMrchivesSearch.showmodal;
       pubExpr:=FrmMrchivesSearch.strSql ;
       SearchReocrd(pubExpr);
    finally
       FrmMrchivesSearch.Free ;
    end;
end;主窗体是以以下方式打开的      FrmArchivesManager:=TFrmArchivesManager.create(self);
      FrmArchivesManager.showmodal;
      FrmArchivesManager.Free;高手请指教指教问题会出在哪?

解决方案 »

  1.   

    FrmMrchivesSearch:=TFrmMrchivesSearch.create(self);
    这种写法不合适,self指的是当前的Form,而你要创建的窗口应该不是隶属于当前窗口吧,所以改成这种形式比较合适
    FrmMrchivesSearch:=TFrmMrchivesSearch.create(Application);
    或者:FrmMrchivesSearch:=TFrmMrchivesSearch.create(nil);
      

  2.   

    FrmMrchivesSearch:=TFrmMrchivesSearch.create(Application);
      

  3.   

    总算解决了,问题出在
    BitUpdateArchives按钮的ModalResult上,把其值设成mrNone就行了!谢谢各位!