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 ------------------------------------------ ...

  2. delphi TComponent类(1)

    来自:http://blog.csdn.net/lailai186/article/details/7442383 ------------------------------------------ ...

  3. 转:学习笔记: Delphi之线程类TThread

    学习笔记: Delphi之线程类TThread - 5207 - 博客园http://www.cnblogs.com/5207/p/4426074.html 新的公司接手的第一份工作就是一个多线程计算 ...

  4. 学习笔记: Delphi之线程类TThread

    新的公司接手的第一份工作就是一个多线程计算的小系统.也幸亏最近对线程有了一些学习,这次一接手就起到了作用.但是在实际的开发过程中还是发现了许多的问题,比如挂起与终止的概念都没有弄明白,导致浪费许多的时 ...

  5. 谈谈Delphi中的类和对象3---抽象类和它的实例

    四.抽象类和它的实例 Delphi中有一个类称为是抽象类,你不能天真的直接为它创建一个实例,如 var StrLst: TString; begin StrLst:= TString.Create; ...

  6. Delphi中TStringList类常用属性方法详解

    TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 先把要讨论的几个属性列出来: 1.CommaText 2.Delim ...

  7. Delphi Class of 类引用

    Delphi Class of 类引用也就是类的类型,也可说是指向类的指针 Type TControlCls = Class of TControl;function CreateComponent( ...

  8. Delphi之TPersistent类 -----ASSIGN

    Delphi之TPersistent类 TPersistent类 TPersistent类是由TObject直接派生的.凡是由TPersistent派生的对象都能够进行流操作.因为所有的组件都是由TP ...

  9. Delphi中线程类TThread实现多线程编程2---事件、临界区、Synchronize、WaitFor……

    接着上文介绍TThread. 现在开始说明 Synchronize和WaitFor 但是在介绍这两个函数之前,需要先介绍另外两个线程同步技术:事件和临界区 事件(Event) 事件(Event)与De ...

随机推荐

  1. nn.ReLU(inplace=True)中inplace的作用

    在文档中解释是: 参数: inplace-选择是否进行覆盖运算 意思是是否将得到的值计算得到的值覆盖之前的值,比如: x = x + 即对原值进行操作,然后将得到的值又直接复制到该值中 而不是覆盖运算 ...

  2. pytorch例子学习——TRAINING A CLASSIFIER

    参考:https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html#sphx-glr-beginner-blitz-cifar1 ...

  3. django一般架构思维导图

    本例已django项目名称为myblog,其下面有2个应用blog和comment介绍:

  4. 1、FreeRTOS移植

    1.FreeRTOS目录结构 FreeRTOS FreeRTOS简略目录如下: ├─FreeRTOS │ ├─Demo // 各种开发工具的完整Demo,开发者可以方便的以此搭建出自己的项目,甚至直接 ...

  5. 微信小程序大型系统架构中应用Redis缓存要点

    在大型分布式系统架构中,必须选择适合的缓存技术以应对高并发,实现系统相应的高性能,酷客多小程序经过慎重选型,选择了采用基于腾讯云服务的Redis弹性缓存技术,结合Redis官方推荐的.NET驱动类库S ...

  6. java.net.UnknownHostException: lc001 未知的网络服务

    java.net.UnknownHostException: lc001 未知的网络服务 读取的是虚拟机的名称 一.查询环境变量 :echo $HOSTNAME lc001 没什么问题 二.查host ...

  7. DOM(一)

    DOM可以将任何HMLT或XML文档描绘成一个由多层节点构成的结构,节点氛围几种不同的类型,每种类型分别表示文档中不同的信息及标记,每个节点都拥有各自的特点.数据和方法. Node类型 DOM1级定义 ...

  8. Spring使用MappingJackson2MessageConverter发送接收ActiveMQ消息

    一.Spring使用JmsTemplate简化对JMS的访问 在JAVA对JMS队列访问中,使用默认的JMS支持将存在大量的检查型异常.通过Spring的支持,可以将所有的JMS的检查型异常转换为运行 ...

  9. 线程中的samaphore信号量及event事件

    一.信号量 samaphore: 在程序中意思为同时允许几个线程运行,比如我们去水上乐园的滑梯玩时,有四个滑梯,每一个滑梯上当没有人在中间玩滑下去时才允许上人,四个滑梯1,2,3,4,同时最多四个人, ...

  10. pdf中内嵌字体问题

    在提交论文pdf到IEEE时总要检查字体是否为内嵌的,查看pdf中所有字体及是否内嵌可查看:http://sinme.blog.sohu.com/120043575.html. 具体做法是: 在pdf ...