我在主窗体中的一个按钮中创建了一窗体:代码如下:
         application.ProcessMessages;
         Form_shjqchq:=TForm_shjqchq.Create(self);
         Form_shjqchq.ShowModal;
         Form_shjqchq.Free;被创建的窗体在执行完一段代码后自动关闭。代码如下:
procedure TForm_shjqchq.FormActivate(Sender: TObject);
begin
    data_clear;(我定义的一个函数,执行完它,这个窗体就要关闭,但是现在它关闭不了。)
    self.Close;    
end;问题是现在self.close 执行后,新创建的窗体还在,没有被关闭。请问大家这是什么问题?
赶快帮帮我吧!

解决方案 »

  1.   

    如果是ShowModal,把Form的ModalResult赋值为ModalResult即可。
    如果是Show,需要调用Close方法,处理Close事件
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
        Action:=caFree;
    end;
      

  2.   

    抱歉抱歉,打错了,应该是:
    如果是ShowModal,把Form的ModalResult赋值为mrOK即可。
      

  3.   

    self.ModalResult:=modalresult;
       不起作用啊?
       怎么办?
      

  4.   

    不行啊self.ModalResult:=mrOk;
       不起作用啊?
       怎么办?
      

  5.   


       我是用的showmodal显示窗体的
       在被显示的窗体的FormActivate事件中添加了如下的代码。
        data_clear;(一个自定义函数)
        //bitbtn1.OnClick(nil);
        self.ModalResult:=mrOk; 想通过你给我的这句关闭该窗体,但是,没有关闭啊
        //self.Close;
      

  6.   

        我的意思通过一个窗体显示我的一个函数的进行过程。
        用了一个progressbar  显示进度,当progressbar.poisition到达max的时候自动关闭该窗体的。
        但是现在问题是关不了!
      

  7.   

         用了一个timer来完成了功能。但是还是要感谢大家了