ModelResult问题

    技术2022-05-11  86

    我在BCB中写:

    void __fastcall TForm1::BitBtn1Click(TObject *Sender)

    {

          if(Form2->ShowModel()==mrok)

               //检查发现this->ModelResult=2; (mrcancel=2)

    }

    void __fastcall TForm2::BitBtn1Click(TObject *Sender)

    {

           ModelResult=mrok;(mrok实际值是1)

          Close();

    }

     

    查看VCL源码才发现:

    procedure TCustomForm.Close;var  CloseAction: TCloseAction;begin  if fsModal in FFormState then    ModalResult := mrCancel                                            //这里又重新赋值了,晕  else    if CloseQuery then    begin      if FormStyle = fsMDIChild then        if biMinimize in BorderIcons then          CloseAction := caMinimize else          CloseAction := caNone      else        CloseAction := caHide;      DoClose(CloseAction);      if CloseAction <> caNone then        if Application.MainForm = Self then Application.Terminate        else if CloseAction = caHide then Hide        else if CloseAction = caMinimize then WindowState := wsMinimized        else Release;    end;end;

     

    想了想,

    ...

          if FormStyle = fsMDIChild then        if biMinimize in BorderIcons then          CloseAction := caMinimize else          CloseAction := caNone      else        CloseAction := caHide;                               //模式窗体CloseAction := caHide,我调用Close()其实就是执行了Hide(),并没有释放窗体

    ....

            if Application.MainForm = Self then Application.Terminate        else if CloseAction = caHide then Hide                                                          //Hide        else if CloseAction = caMinimize then WindowState := wsMinimized        else Release;

     

    最后改成这样了

    void __fastcall TForm2::BitBtn1Click(TObject *Sender)

    {

           ModelResult=mrok;(mrok实际值是1)

          Hide();

    }

    xgbing 认证博客专家 驱动开发 arm开发 嵌入式硬件 专注于嵌入式方向的软硬件设计与开发(ASM\C\C ,RTOS,Linux,android,以太网\嵌入式网络协议栈,蓝牙,WIFI,文件系统/嵌入式存储,显示\音频,单片机\DSP\ARM\Cortex,电路设计\PCB布板\硬件驱动\数字逻辑CPLD,FPGA\niosII),目前从事VirtualBox\qemu\KVM虚拟化研究工作。

    最新回复(0)