能详细说一下action:=cafree这句吗?好多书都没说清楚!

Posted jijm123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了能详细说一下action:=cafree这句吗?好多书都没说清楚!相关的知识,希望对你有一定的参考价值。

    1. 关闭一个窗口有几种方式:最小化这个窗口,隐藏这个窗口,释放这个窗口,这句话就是说但这个窗口关闭的时候释放这个窗口,它应该是在form的onclose事件里面的
        

       

    2.  

      就是form.onclose()
       begin
        Action:=cafree;
       end;它的做用是不是相当于form.relase或form.free?
        

       

    3.  

      procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
      begin
        action:=cafree; //TCloseAction = (caNone, caHide, caFree, caMinimize);end;
      其中action有四种取值按顺风序分别:什么也不做,隐藏,释放,最小化
      action代表当触发窗体OnClose事件时,以哪种方式去响应!
        

       

    4.  

      其实你看一下Forms单元的代码
      forms.pas的4513行就明白了
      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;
      当等于caFree时就Release;
      而Close是响应WM_CLOSE调用的
      forms.pas的4093行
      procedure TCustomForm.WMClose(var Message: TWMClose);
      begin
        Close;
      end;
      也可以是由你的代码调用
        

       

    5.  

      当form.onclose事件触发时,action参数会取一个值,缺省情况它取caMinimize,因为传参caMinimize的结果不会影响到一分配的类型指针空间,不然,可能会因为内存使用错误导致内存泄漏。
        

       

    6.  

      当form.onclose事件触发时,action参数会取一个值,缺省情况它取caMinimize,因为传参caMinimize的结果不会影响到已分配的类型实例指针空间,不然,可能会因为内存使用错误导致内存泄漏。
          如果action:=cafree 就把分配给Tform类型实例的内存空间释放,但是,这仍然是不可靠的,因为,form实例的指针仍然指向这个内存地址,所以你必须在form.ondestroy事件中写如下代码:form:=nil;
           这就完了吗?NO!
           现在,你无法将它再实例化了,So,你在从新实例化它之前,必须如下:
           if not assigned(form) then
              form:=Tform.create(self);
              form.show;
        

       

    7.  

      在OnClose 事件中
      Free;

      self.Free;
      有什么区别?
        

       

    8.  

      vcmfc,great123,冰棍他妈的老B真难操
      vcmfc,great123,再操冰棍他妈的B----大贱B
      vcmfc,great123,冰棍,你妈是我干的!真的!
      vcmfc,great123,冰棍,Mda在床上等我,怎么办?
      vcmfc,great123,冰棍,Mda叫我晚上去操她!
      vcmfc,great123,冰棍,你老妈前几天跟一条狗搞在一起呀!!
      vcmfc,great123,冰棍,你老妈前几天被狗操翻了
         

以上是关于能详细说一下action:=cafree这句吗?好多书都没说清楚!的主要内容,如果未能解决你的问题,请参考以下文章

Mood出大问题(最近很喜欢说这句话)

delphi中 用close关子窗口为啥老是出错

vue el-upload上传文件方法 详细解答 action 和 http-request两种方式

C语言中有个img变量是这么定义的:IMAGE img。IMAGE是啥类型的变量?怎么用能不能详细说一下?

android中的context是啥意思,能详细说一下吗 ?

请问下Java中啥Dao层,Server层.....,有大神能给我讲一下互相之间的联系还有作用吗,详细点吧,我新手