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这句吗?好多书都没说清楚!的更多相关文章

  1. 转delphi中 formclose的事件 action:=cafree form:=nil分别是什么意思?

    转自:http://www.cnblogs.com/jshchg/articles/1929894.html MDI子窗体关闭时用到的(以下摘自Delphi的帮助)caNone  The form i ...

  2. delphi中 formclose的事件 action:=cafree form:=nil分别是什么意思?

    MDI子窗体关闭时用到的(以下摘自Delphi的帮助)caNone  The form is not allowed to close, so nothing happens.caHide  The ...

  3. 使用MFC开发有十多年了,结合自身的体会,随便说几句(不能样样都依赖别人,C体系的人,绝对不怕人踢馆)

    挺长时间了吧,这个帖子还没沉下去,使用MFC开发有十多年了,结合自身的体会,随便说几句:1.MFC是一个C++的基础类库,封装了绝大多数的API函数,主要是用来创建带UI的应用程序,服务端程序或着不带 ...

  4. mysql中char与varchar的区别分析(补充一句,int和integer没区别)

    转自:http://www.jb51.net/article/23575.htm 在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定 ...

  5. [YII2] 修改默认控制器Controller以及默认方法Action

    试了好多方法都没成功,下面方法绝对能成功设置 在框架里面有源码,在/vendor/yiisoft/yii2/web/Application.php的第34行找到了: class Application ...

  6. windows类书的学习心得(转载)

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  7. windows类书的学习心得

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  8. textarea 带换行符保存数据与带换行符展示数据

    毕业设计进行ing~ 最近要想要实现一个站内邮箱,想要带换行地输出邮件主体内容. 这两天为了解决这个问题百度了好多东西,发现相关问题有很多记录,可能这确实是大多数初学者也碰到的问题.自己找了好多地方都 ...

  9. 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效

    数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...

随机推荐

  1. Python tuple元组学习

    1.tuple和list非常类似,但是tuple一旦初始化就不能修改 classmates = ('Michael', 'Bob', 'Tracy') 现在,classmates这个tuple不能变了 ...

  2. 网络协议相关面试问题-DNS相关面试问题

    对于网络上的大部通讯都是基于TCP/IP协议的, 其中最重要的是IP协议,它是基于IP地址的,而计算机通讯只能识别IP地址,如192.168.0.1,而不能识别像咱们在浏览器敲得见名之义的" ...

  3. JVM 字节码指令手册 - 查看 Java 字节码

    JVM 字节码指令手册 - 查看 Java 字节码 jdk 进行的编译生成的 .class 是 16 进制数据文件,不利于学习分析.通过下命令 javap -c Demo.class > Dem ...

  4. CSS基础学习-8.CSS盒子模型_标准盒子&&9.CSS怪异盒子

    怪异盒模型 box-sizing:content-box;/*正常盒模型,默认值*/ box-sizing:border-box:/*怪异盒模型,固定了盒子的大小,无论是否添加内边距还是边框,盒子的大 ...

  5. 使用幕布时,在Session过期后,弹出框加载出登陆的HTML的问题

    思路:在登陆页面判断当前加载的Url是否时login/index ,如果不是跳转到登陆页 //设置或获取对象指定的文件名或路径. var Url = window.location.pathname; ...

  6. JAVA 流与文件

    流 InputStream和OutputStream是所有的输入流和输出流的超类.他们两个都是抽象类. read方法和write方法都是阻塞方法,这意味着如果不能里可以写入或者读取,比如因为网络问题, ...

  7. jquery unload方法 语法

    jquery unload方法 语法 作用:当用户离开页面时,会发生 unload 事件.具体来说,当发生以下情况时,会发出 unload 事件:点击某个离开页面的链接在地址栏中键入了新的 URL使用 ...

  8. Catch That Cow (POJ - 3278)(简单BFS)

    转载请注明出处:https://blog.csdn.net/Mercury_Lc/article/details/82693928作者:Mercury_Lc 题目链接 题解:给你x.y,x可以加1.减 ...

  9. git命令行指南

    Git 常用命令 git init here -- 创建本地仓库(repository),将会在文件夹下创建一个 .git 文件夹,.git 文件夹里存储了所有的版本信息.标记等内容 git remo ...

  10. JavaScript如何比较两个数组的内容是否相同

    今天意外地发现JavaScript是不能用==或===操作符直接比较两个数组是否相等的. alert([]==[]); // false alert([]===[]); // false 以上两句代码 ...