我有个模式窗体,没有包含报表,只是父窗体有报表,调试的时候,怎么会跳到FrxDBSet去。
还有就是,模式窗体:procedure TFrm_GH.btnQuitClick(Sender: TObject);
begin
//  inherited;
    ModalResult := mrIgnore;
    ShowMessage(IntToStr(mrIgnore));
    Close;
end;procedure TFrm_GH.DBGridSingleDblClick(Sender: TObject);
begin
     P_GH_Blh := Query_GH.FieldByName('blh').AsString;
     P_GH_Hzxm := Query_GH.FieldByName('hzxm').AsString;
     P_GH_Ghrq := Query_GH.FieldByName('ghrq').AsString;
     ModalResult := mrOk;
     Close;end;
主窗体,ShowMessage(IntToStr(Int_Result)+'a');//返回值都是2
procedure TFrm_Appoint.Edit_MNoDblClick(Sender: TObject);
var
  Int_Result:Integer;
begin
      Frm_GH := TFrm_GH.Create(Application);
      Int_Result := Frm_GH.ShowModal ;
      ShowMessage(IntToStr(Int_Result)+'a');//返回值都是2
      if Int_Result = mrOk then
      begin
            Edit_MedicalName.Text := P_GH_Hzxm;
            Edit_MedicalNo.Text := P_GH_Blh;
      end
end;模式窗体上有表格,相应值会返回到全局变量。模式窗体是继承过来的,在CLOSE中,没有改变modelResulet这个值啊?

解决方案 »

  1.   

    或许是你使用ModalResult 这个属性时,父窗口也有这个属性造成混乱所至,直接用数值变量保存看盾
      

  2.   


    参数传递,只是改变下全局变量,和ModelResule没有关系。
      

  3.   

    1.用了frx报表,调试的时候任何有关报表的代码变化了,是要进入frx源码的了,比如dataset改变了
    可以用断点方式调试跳过执行源码
    2.mrOk是1,mrIgnore是5,默认的close是2;看看你的代码,模式窗体2个按扭最后都是close
    (用了ModalResult就不要再close了,是多余的),所以返回的就是2,所以Int_Result=2但mrOk=1
    当然条件永远都不成立了
      

  4.   


    所以返回的就是2,所以Int_Result=2但mrOk=1谢谢,问题解决了,我还以为是继承的时候出的问题。  1.用了frx报表,调试的时候任何有关报表的代码变化了,是要进入frx源码的了,比如dataset改变了
    可以用断点方式调试跳过执行源码
    但是模式窗体里边的ADOQuery和报表一点关系都没有,还在执行模式窗体里边代码,就跳过去了。