delphi TComponent类(1)
来自:http://blog.csdn.net/lailai186/article/details/7442383
------------------------------------------------------------------------
TComponent类
TComponent类直接由TPersistent派生。TComponent的独特特征是它的属性能够在设计期间通过ObjectInspector来控制,能够拥有其他组件。
非可视组件也是从TComponent派生的,因此它们也继承了在设计期间可以被控制的能力。TComponent派生的非可视对象的典型例子是TTimer组件。TTimer组件是不可视组件,但它仍可以在组件面板上得到。TComponent定义了几个重要的属性和方法,在随后的段落中将加以描述。
1.TComponent的属性:
Owner:组件的拥有者
ComponentCount:组件所拥有的组件数目
ComponentIndex:组件在其拥有者列表中的位置。列表中第一个组件的该值为0
Components:一个属性数组,包含组件拥有的组件列表。列表中第一个组件的该值为0
ComponentState:该属性包含TComponentState类型组件的当前状态。
(更详细的解释:
ComponentState属性
对应对象:所有组件。
声明:property ComponentState: TComponentState;
功能:ComponentState属性用来描述组件的状态。 ComponentState属性在运行时是有效的,且它是只读型的。它的类型是TComponentState,被声明成为:TComponentState = set of (csLoading, csReading, csWriting, csDestroying, csDesigning, csAncestor, csUpdating, csFixups); TComponentState是一个标志集合,把它们组合在一起可以导出组件的状态,一些公用的标志包括以下:
csDesigning:Delphi环境是设计方式,因此可以编辑组件。
csReading:组件从一个流中读取它的属性值。
csWriting:组件将它的属性值写入一个流中。
组件在内部使用CompnentState属性,可以保证某些程序可以执行。因此,无需经常直接地访问ComponentState。)
ComponentStyle:组件的风格。可设为csInheritable或csCheckPropAvail,其意思参见在线帮助。
Name:组件的名称
Tag:一个整数,该属性没有确定的意思。组件编写者不能使用它,但应用程序编写者可以使用。因为该值为一整数类型,数据结构的指针(甚至于对象实例)可以通过它来区分。
DesignInfo:不要使用这个属性。它由窗体设计器使用。
2.TComponent的方法
TComponent定义了几个方法,可以拥有其他组件,可以在窗体设计器上被控制。
TComponent定义了组件的构造器Create()。该构造器负责创建组件的实例并通过参数传递指定组件的拥有者。与TObject.Create()不同,TComponent.Create()是虚拟的。TComponent派生类要实现构造器,必须覆盖这个方法。虽然你能在组件类中声明其他的构造器,但在设计期和运行期基于流创建组件的实例时,VCL只能使用TComponent.Create()构造器。
TComponent.Destroy():析构器用于释放组件及其所有资源。
TComponent.Destroying():方法用于给组件及其所拥有的组件设置一个状态,表示它们正在被销除。
TComponent.DestroyComponents():方法用于析构组件。一般你不必直接使用这些方法。
TComponent.FindComponents():方法便于你查找只知道名字的组件。假设你知道主窗体中有一个叫Edit1的TEdit组件,当你想查找这个组件时,你可以通过执行下列代码来获取它的实例指针:
EditInstance := FindComponent('Edit');此例中,EditInstance是TEdit类型。如果没有找到,FindComponent()将返回nil。
TComponent.GetParentComponent():方法返回父组件的实例。如果该组件没有父,这个方法将返回nil。
TComponent.HasParent():返回一个Boolean值,表明组件是否有父。注意该方法与组件是否有拥有者无关。
TComponent.InsertComponent():方法增加一个组件,为调用该方法的组件所拥有;
TComponent.RemoveComponent():从调用该方法的组件中删除一个它拥有的组件。你一般不需要调用这些方法,因为组件的Create()构造器和Destroy()析构器会自动调用它们。
delphi TComponent类(1)的更多相关文章
- delphi TComponent类 2
来自:http://blog.csdn.net/lailai186/article/details/7442385 ------------------------------------------ ...
- Delphi之TComponent类
TComponent类 TComponent类直接由TPersistent派生.TComponent的独特特征是它的属性能够在设计期间通过ObjectInspector来控制,能够拥有其他组件.非可视 ...
- QMetaObject感觉跟Delphi的类之类有一拼,好好学一下
提供了一堆原来C++没有的功能,比如反射什么的...但是可能还是没有Delphi的类之类更强,因为类之类可以“创建类”.可惜我学艺不精,对“类之类”也没有完全学会.先留个爪,有空把两个东西都好好学学, ...
- delphi 实体类 JSON 数组
delphi 实体类 与JSON转换,序列化 TJson REST.JSON.pas TJson.JsonToObjectTJson.ObjectToJsonString JsonEncode O ...
- 比较C++、Java、Delphi声明类对象时候的相关语法
同学们在学习的时候经常会遇到一些问题,C++.Java.Delphi他们到底有什么不一样的呢?今天我们来比较C++.Java.Delphi声明类对象时候的相关语法.希望对大家有帮助! C++中创建对象 ...
- Delphi 遍历类中的属性
http://blog.csdn.net/easyboot/article/details/8004954 Delphi 遍历类中的属性 标签: delphistringbuttonclassform ...
- 再次深入理解delphi的类
property WindowState: TWindowState read FWindowState write SetWindowState; {声明一个属性WindowState,它从字段FW ...
- DELPHI学习---类和对象(五篇)
Classes and objects(类和对象) 类(或者类类型)定义了一个结构,它包括字段(也称为域).方法和属性:类的实例叫做对象:类的字段.方法和属性被称为它的部件(components)或成 ...
- 转:Delphi的类与继承(VB与delphi比较)
既然已经做出了com程序用delphi来开发的决定,那当然就要对delphi进行一些深入的了解.有人说delphi是一个用控件堆砌起来的工具,和vb没什么两样:也有人说dephi实际上是面向过程的,他 ...
随机推荐
- CAS使用心得
1.理解CAS实现SSO需要哪些组成部分 2.理解CAS实现SSO流程,包括登陆.注销.二次登陆.其他应用登陆 3.CAS部署需要SSL支持,理解容器如何开启SSL.服务端证书.jre证书信任.创建以 ...
- android studio 卡慢的问题(android studio 3.0)
http://www.jianshu.com/p/0228b7d017bb 想体验一下android studio 3.0的canary版,主要是学习Kotlin.创建项目后,下载相关文件一直不成功. ...
- Codeforces 901C. Bipartite Segments(思维题)
擦..没看见简单环..已经想的七七八八了,就差一步 显然我们只要知道一个点最远可以向后扩展到第几个点是二分图,我们就可以很容易地回答每一个询问了,但是怎么求出这个呢. 没有偶数简单环,相当于只有奇数简 ...
- bzoj2758【scoi2012】Blinker的的噩梦
题目描述 一天Blinker醒来,发现自己成为了一个二维世界的点,而且被标记上了一个奇怪的值. 这个世界是由N个边界互不相交(且不相切)的图形组成,这里图形仅包括圆和凸多边形.每个图形还有一个权值.每 ...
- [USACO18OPEN]Out of Sorts P 冒泡排序理解之二
题目描述 Bessie把快速排序和冒泡排序混在了一起 给一个伪快排的代码: 冒泡: bubble_sort_pass (A) { to length(A)- ], swap A[i] and A[i+ ...
- Python实现类似JavaScript 的Json对象
Python实现类似JavaScript 的Json对象 用过js的都知道 js中json也是一个对象,所以可以直接通过class.attr 取值,当attr不存在时也不会报错,那么Python可不可 ...
- Rstudio常用快捷键
多行注释 ctrl+shift+c 运行单行或选中代码 ctrl+enter 查看帮助 F1
- PhantomJS的替代品--无头浏览器(Headless Chrome)
在使用PhantomJS时候,出现提示: UserWarning: Selenium support for PhantomJS has been deprecated, please use hea ...
- K8S调度之pod亲和性
目录 Pod Affinity Pod亲和性调度 pod互斥性调度 Pod Affinity 通过<K8S调度之节点亲和性>,我们知道怎么在调度的时候让pod灵活的选择node,但有些时候 ...
- P1558 色板游戏
P1558 色板游戏 题目背景 阿宝上学了,今天老师拿来了一块很长的涂色板. 题目描述 色板长度为L,L是一个正整数,所以我们可以均匀地将它划分成L块1厘米长的小方格.并从左到右标记为1, 2, .. ...