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()析构器会自动调用它们。

时间: 2024-10-13 22:58:40

delphi TComponent类(1)【转】的相关文章

Delphi之TComponent类【转】

原文:http://www.cnblogs.com/spider518/archive/2010/12/27/1917527.html TComponent类 TComponent类直接由TPersistent派生.TComponent的独特特征是它的属性能够在设计期间通过ObjectInspector来控制,能够拥有其他组件.非可视组件也是从TComponent派生的,因此它们也继承了在设计期间可以被控制的能力.TComponent派生的非可视对象的典型例子是TTimer组件.TTimer组件

Delphi之TComponent类

TComponent类 TComponent类直接由TPersistent派生.TComponent的独特特征是它的属性能够在设计期间通过ObjectInspector来控制,能够拥有其他组件.非可视组件也是从TComponent派生的,因此它们也继承了在设计期间可以被控制的能力.TComponent派生的非可视对象的典型例子是TTimer组件.TTimer组件是不可视组件,但它仍可以在组件面板上得到.TComponent定义了几个重要的属性和方法,在随后的段落中将加以描述. 1.TCompon

Delphi 异常类

----------------------------------------------------------------------EExternal = class(Exception) EExternalException = class(EExternal)    无效的异常码 整数计算异常    EIntError = class(EExternal)                整数计算异常(基类)        EDivByZero = class(EIntError)  

Delphi线程类 DIY(把类指针作为参数传进去,就可以执行类里面的方法啦)

Delphi 封装了一个很强大的线程类 TThread, 我们也自己动手制作一个简单的线程类 首先Type一个类 [delphi] view plain copy type TwwThread = class constructor Create; overload; destructor Destroy; override; private m_hThread: THandle;     //线程 m_ThreadID : TThreadID; public procedure Execute

获取Delphi所有类的类信息

Delphi遍历进程中所有Class的TypeInfo,即便是在implementation中的class或者其他 class的private的子class. 一般普通EXE中的TypeInfo存放在PAGE_EXECUTE_*的内存中,而BPL则存放在PAGE_READ_WRITE的内存中. 所以我们要做的是遍历可执内存的内存片,然后找出TypeInfo的特征. 这里我是只找Class的类型信息,特征是tkClass,classname合法, 沿着typedata中的ParentInfo往前追

Delphi的类与继承

既然已经做出了com程序用delphi来开发的决定,那当然就要对delphi进行一些深入的了解.有人说delphi是一个用控件堆砌起来的工具,和vb没什么两样:也有人说dephi实际上是面向过程的,他的面向对象并不彻底.实际生活中持这两种观点的人不在少数,就拿我认识的一个非常好的程序员来说吧,他很早就开始用vb,到后来接触到delphi,并且用delphi也开发了不少程序,但吃惊的是这些程序全都是面向过程的.我并没有贬低这种做法的意思,我想说的是:好的delphi控件+好的编程规范+优秀的vcl

Delphi - OLE类实现TTS方式语音朗读

Delphi调用OLE类实现TTS方式语音朗读 直接看代码: unit uMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Comobj, Dialogs, StdCtrls, RzButton; type TFrmMain = class(TForm) btnStart: TRzBitBtn; mmMsg: TMemo; procedure btnSta

谈谈Delphi的类和对象:三、类可以理解成一种特殊的数据结构、类型转换

三.类可以理解成一种特殊的数据结构 我们知道数据类型可以进行强制类型转换,类既然可以理解成一种数据类型,那么它也应该可以进行类型转换.比如下面代码为一个按钮(Button1)的单击事件 procedure TForm1.Button1Click(Sender: TObject); var ACaption: String; begin ACaption:= TButton(Sender).Caption; //Sender从TObject转化为TButton ShowMessage(Format

Delphi实现类的持久化保存(DFM格式)

var inStream,outStream:TMemoryStream; begin inStream:=TMemoryStream.Create; outStream:=TMemoryStream.Create; try inStream.WriteComponent(self); inStream.Position:=0; ObjectBinaryToText(inStream,outStream); outStream.Position:=0; outStream.SaveToFile(