• Delphi之TComponent类


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

    好的代码像粥一样,都是用时间熬出来的
  • 相关阅读:
    JDBC编程获取数据库连接(mysql 8.0版本以上)
    opnet启动和debug模式提示warning:找不到目录
    打开Word时默认使标题下的内容折叠起来
    OPNET进程编译器无法编译:Compilation failed || VS2017或VS2019与opnet的安装注意
    IDEA中使用单元测试方法@Test
    C/C++字符数组、字符串、字符串指针、字符串指针数组的访问操作(一维数组)
    C/C++字符数组、字符串、字符串指针、字符串指针数组的声明和初始化操作(一维数组)
    安装C++集成开发环境CodeBlock(带MinGW)
    Express
    模块化
  • 原文地址:https://www.cnblogs.com/jijm123/p/15255680.html
Copyright © 2020-2023  润新知