请看下面的判断语句,运行中即使(frmcept.ShowModal) = mrOk,运行时仍然会运行else中的exit语句,怎么调整都这样。if not Assigned(frmcept) then  //调用系统注册输入并验证窗口;
       frmcept:=Tfrmcept.create(Self);
if (frmcept.ShowModal) = mrOk then
    begin
       sg_okvalidate:=true;
    end
else
    begin
      sg_okvalidate:=false;
      exit;
    end;

解决方案 »

  1.   

    frmcept.ShowModalfrmcept窗体没有设置好,添加一个BitBtn1,属性ModalResult 的值为 mrOKprocedure TForm1.BitBtn1Click(Sender: TObject);
    begin
    if form2.ShowModal=mrok then
        showmessage('ok')end;
      

  2.   

    窗体中有两个button,一个确认对应ShowModal=mrok,一个取消ShowModal=mrcancel。
      

  3.   

    看了很久我没看出毛病来
    楼主为什么加括号呢? (frmcept.ShowModal)
      

  4.   

    if not Assigned(frmcept) then 
       frmcept:=Tfrmcept.create(Self); 
    frmcept.ShowModal ;
    sg_okvalidate := frmcept.ModaLresult = mrOK;然后你在窗体里面判断如果是确定那就
    ModalResult := mrok
    否则
    ModalResult := mrCancel;
      

  5.   

    我的问题是(frmcept.ShowModal) = mrOk执行sg_okvalidate:=true;后为什么还执行else中的exit语句
      

  6.   

    从语法上看不存在 LZ 所说的问题啊,LZ 再认真地调试下?
      

  7.   

    (frmcept.ShowModal) = mrOk ?
    抱着学习和怀疑的心态,问一下各位:frmcept.ShowModal 有值吗?有的话也应该是个boolean值,表示操作是否成功?
    我弄个一个类似的东西,我觉得应该是这样的:
    点击你的任一个Button后,产生的值(mrOK或mrCancle)传给 ModalResult,然后判断if modalresult=mrOK,就可以了。frmcept.ShowModal要么Boolean要么没值(具体哪个我不懂),所以就算你mrOK了if (frmcept.ShowModal) = mrOk也不可能成立,还是要走eixt语句的。不知对不对,另外frmcept.ShowModal 有值吗?盼解~~
      

  8.   

    s11ss:有调试了很多次。另外不能用if modalresult=mrOK这种方式。
      

  9.   

    在这个函数中 TCustomForm.ShowModal 的确有 Result := ModalResult
      

  10.   

    procedure TForm1.btn1Click(Sender: TObject);
    var
      sg_okvalidate: Boolean;
      frmcept: Tfrmcept;
    begin
      frmcept := Tfrmcept.Create(Self);
      try
        if frmcept.ShowModal = mrOk then
        begin
          sg_okvalidate:=true;
          ShowMessage('a');
        end
        else begin
          sg_okvalidate:=false;
          ShowMessage('b');
          exit;
        end;
      finally
        frmcept.Free;
      end;
    end;
    我自己试验了一下,完全正常的。不过和楼主的代码多少有点差别,楼主试试我的代码
      

  11.   

    if (frmcept.ShowModal) = mrOk then 改为if frmcept.ShowModal = mrOk then 
      

  12.   

    不行啊。这样调试到try提示00000000地址错误。不知道是不是我的delphi出问题了
      

  13.   

    还有为什么要加括号呢?if not Assigned(frmcept) then  //调用系统注册输入并验证窗口; 
          frmcept:=Tfrmcept.create(Self); 
    if frmcept.ShowModal = mrOk then 
        begin 
          sg_okvalidate:=true; 
        end 
    else 
        begin 
          on E: Exception do 
          begin
            ShowMessage(E.Message);
           end;
          sg_okvalidate:=false; 
          exit; 
        end;
      

  14.   

    括号是误写,不是一定要加的。另外现在可以了。不知道怎么回事我在环境配置里调整了把delphi object中选项关闭了。好像好了。我原来的代码测试也可以了。怪了。估计还是电脑问题或delphi本身问题。哎,delphi确实稳定性不够啊。个人认为稳定性比技术先进性更重要啊。fhfanxin,兄弟谢了。