zoukankan      html  css  js  c++  java
  • 能详细说一下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,冰棍,你老妈前几天被狗操翻了
           
  • 相关阅读:
    JDBC
    MySQL 事务
    MySQL 处理海量数据时一些优化查询速度方法
    MySQL 分支和循环结构
    MySQL 分页查询和存储过程
    Oracle PL/SQL异常、存储过程和触发器
    Oracle PL/SQL游标
    mysql主键问题
    spring-springmvc code-based
    AOP实现原理
  • 原文地址:https://www.cnblogs.com/jijm123/p/11259585.html
Copyright © 2011-2022 走看看