FMX 动态创建 和 销毁(释放free) 对象
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
function FindChild(Name: string; Parent: TFmxObject): TFmxObject;var I: Integer; Child: TFmxObject;begin Result := nil; if (Parent <> nil) and (Parent.Children <> nil) then begin for I := Parent.Children.Count - 1 downto 0 do begin Child := TFmxObject(Parent.Children[I]); if Child.Name = Name then begin Result := Child; break; end; end; end;end;procedure FreeAndNilFmxObject(var Obj: TFmxObject);begin if Obj <> nil then begin Obj.Parent := nil; Obj.SetRoot(nil); FreeAndNil(Obj); end;end;var AIndex : Integer = 0;procedure TForm1.Button1Click(Sender: TObject);var A: TButton; B: TFmxObject;begin ReportMemoryLeaksOnShutdown := True; B := FindChild('A', Self); if (B <> nil) and (B is TButton) then begin A := B as TButton; B := nil;// //后面 FormDestroy 的代码不一样,但效果一样。 FreeAndNilFmxObject(TFmxObject(A)); end;// if (B <> nil) and (B is TButton) then// begin// A := B as TButton;// B.Parent := nil;// B.SetRoot(nil);// B := nil;// FreeAndNil(A);// end; inc(AIndex); A := TButton.Create(nil); A.Name := 'A'; A.Position.Y := AIndex * A.Height; A.Text := '按钮' + AIndex.ToString; A.Parent := Self;end;procedure TForm1.FormDestroy(Sender: TObject);var B: TFmxObject;begin ReportMemoryLeaksOnShutdown := True; B := FindChild('A', Self); //这样写更简单些。 FreeAndNilFmxObject(B);end; |
http://www.delphi6.com/thread-68.htm
FMX 动态创建 和 销毁(释放free) 对象的更多相关文章
- 【转】FMX 动态创建及销毁(释放free)对象
http://www.2pascal.com/thread-3037-1-1.html这是原文地址. (* ********************************************** ...
- C#动态创建接口的实现实例对象
本文简单介绍如何动态创建接口interface的实现实例对象,包含两个知识点: 1.如何获取接口interface的所有实现实例对象? 2.如何判断实例对象的构造函数是否有参数? 准备工作 首先新建一 ...
- C#动态创建单例类的对象
单例类 public class SnappingClass : ISnappingEnvironment, IExtension { // private static readonly Snapp ...
- unity3d通过代码动态创建销毁游戏对象
只能动态创建内部提供的游戏对象,代码如下: //按下C后创建 if (Input.GetKeyDown (KeyCode.C)) { GameObject s1 = GameObject.Create ...
- Qt Quick 组件和动态创建的对象具体的解释
在<Qt Quick 事件处理之信号与槽>一文中介绍自己定义信号时,举了一个简单的样例.定义了一个颜色选择组件,当用户在组建内点击鼠标时,该组件会发出一个携带颜色值的信号,当时我使用 Co ...
- Unity进阶技巧 - 动态创建UGUI
前言 项目中有功能需要在代码中动态创建UGUI对象,但是在网上搜索了很久都没有找到类似的教程,最后终于在官方文档中找到了方法,趁着记忆犹新,写下动态创建UGUI的方法,供需要的朋友参考 你将学到什么? ...
- 动态创建html元素的几种方法
可以通过以下几种方式动态创建html元素: 1.使用jQuery创建元素的语法 2.把动态内容存放到数组中,再遍历数组动态创建html元素 3.使用模版 □ 使用jQuery动态创建元素追加到jQ ...
- jQuery动态创建html元素的常用方法汇总
在使用jQuery进行WEB程序设计的时候非常有用.分享给大家供大家参考.具体方法如下: 一般来说,可以通过以下几种方式动态创建html元素: 1.使用jQuery创建元素的语法 2.把动态内容存放到 ...
- 不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板
[源码下载] 不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板 作者:webabcd 介绍不可或缺 Window ...
随机推荐
- hbase 2.0.2 put和delete的一些坑
测试的inbox表为多版本表,封装的scanTable已设置查询全部版本,以下的测试基于hbase2.0.2 一.put(针对相同的rowkey) 测试1.使用方法链的形式对同一个put添加数据到不同 ...
- 关系型数据库工作原理-快速缓存(翻译自Coding-Geek文章)
本文翻译自Coding-Geek文章:< How does a relational database work>. 原文链接:http://coding-geek.com/how-dat ...
- [Codevs 1107][NOIP 1107]等效表达
主题连接:http://codevs.cn/problem/1107/ 一道非常奇妙的题目. 对于算术表达式一类的问题,能够採用编译原理里的后缀表达式的方式来做.详细做法是分别维护两个栈,一个栈里保存 ...
- 关于java项目与web项目中lib包的那点事
一.在java项目中如何引入外部jar包:1.在我们的java项目下新建一个lib文件夹:2.将我们需要引入的jat包复制到lib文件夹下:3.选中我们lib包下的jar,右键选择Build Path ...
- Java8推出各种优惠(从英文文档翻译)
翻译了一天.最终把翻译任务的"Java 8全部的包介绍"翻译完了,收获也是很大,了解了Java8中全部包的作用,对Java8有了一个总体的了解,另外也是提高了自身的阅读能力. ht ...
- oracle 数组
定义一个长度为5的字符串数组 type str_array is varray(5) of varchar2(30); v_str_array str_array := expr_key_array( ...
- vue-router设置页面标题
通过vue-router设置页面标题 const router = new Router({ routes: [ { path: '/', name: 'EntryConfirmation', met ...
- automapper如何全局配置map条件过滤null值空值对所有映射起效
原文 automapper如何全局配置map条件过滤null值空值对所有映射起效 我们在使用automapper的时候经常会遇到这样的问题:假设展示给用户的数据我们用UserDto类,User类就是我 ...
- Android TV开发总结(七)构建一个TV app中的剧集列表控件
原文:Android TV开发总结(七)构建一个TV app中的剧集列表控件 版权声明:我已委托"维权骑士"(rightknights.com)为我的文章进行维权行动.转载务必转载 ...
- Blend_Effect
原文:Blend_Effect 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010265681/article/details/76651796 ...