zoukankan      html  css  js  c++  java
  • Delphi 组件开发教程指南(3)组件注册

        在上一篇中,我们简单的实现了一个对Delphi自身的TEdit编辑框控件的一个扩充!但是我们并不能像Delphi自己的TEdit一样,能够在设计状态下进行设计,而是非得要自己手动创建控件,然后才能使用。这个虽然说也是组件,但是却失去了组件的可设计的方便性,仅仅可作为一个类库来使用。现在我就来介绍一下,如何让这个组件注册到IDE上,然后让你能够在设计状态下可以设计使用。

       在讲注册组件的时候,我们需要先明白Delphi中的包的概念,这里我就不做说明了,不清楚的,可以到Cnpack网站去了解这方面的知识。在注册组件时,就需要一个设计期间的包文件,然后将我们上次新建的Edit的那个单元文件添加到包中。首先,我们新建一个包文件,然后添加单元文件,具体参考如下:

    从图上的操作可以看到,我先新建了一个名字叫做TestPackage的包,然后将Edit1.pas的单元文件添加到这个包里面了,之后编译,安装了之后,就将控件显示在Standard那个组件栏中了,里面有一个TEdit1的组件,那个就是我们从TEdit继承过来的新组件!然后再看属性编辑器中就多了Alignment这个属性,设置它,就能设置文字的对齐方式了。

       好了,到此为止,这个简单组件就注册完成了,可能有人不了解,就建立一个包,编译安装,就能将组件注册到IDE的组件栏中去吗?实际上当然不是做个安装包编译一下就完了的。还记得,在上一篇中,我最开始用组件编写向导做了什么吗?我选择了将组件安装到Standard那个栏上。有心的人打开Eidt1.pas可能就会发现在Edit1.pas中有一个注册的过程为

    procedure Register;

    implementation

    procedure Register;
    begin
    RegisterComponents(
    'Standard', [TEdit1]);
    end;

    这个Register就是组件注册的过程,包会自动调用的,注册过程中调用了RegisterComponents这个过程

    这个过程的第一个参数指定要注册到IDE的哪个组件面板(如果IDE组件面板中没有你给定的这个值,Delphi会自动添加一个新的组件面板),参数二指定的是要注册到IDE的组件对象类数组。

    另外,这里要提出需要注意的一点就是,虽然Delphi本身是不区分大小写的,但是记得这个组件注册的过程的Register必须是这个样子,而不能变成小写register这样,否则,组件就注册不上去了哈,同时,注意,我在前面给TEdit1的新属性Alignment的声明是放在Published这个域中的,这是因为要想在IDE设计期环境能够看到这个属性,就必须放在Published域下面,该域声明的变量与属性以及函数等,能被所有的人看到,开放度最强,Public域的能被大多数看到,但是唯一不能被IDE设计期的属性编辑器看到,Protected仅仅能被从它往后继承的子类看到,Private仅仅能被当前类使用(不过在同一个单元的类中,Delphi默许各个类能相互访问本单元其他类的任何属性变量)

         在IDE的组件面板上,可以发现TEdit和TEdit1两个组件的图标是一样的!其实也就是TEdit1同时也继承的TEdit显示的图标,这个图标是可以换成别的图标的!下面我们再给这个组件换一个我们自己的图标,这个可以用Delphi7版本的ImageEditor构建一个dcr文件,新建一个dcr文件,然后添加位图,然后添加一个图片资源,然后修改名称为你组件的名字,比如这里叫TEDIT1,将图片修改成这个名字,然后保存到和Edit1.pas相同的目录下保存名字为Edit1.dcr,然后再编译一下包文件,再去看组件面板上的信息,就发现图标变了!这里,因为我用的是Delphi2007,所以没有那个ImageEditor的资源编辑器了,这里我就直接用Brcc32这个资源编译工具来生成dcr。首先,我们新建立一个rc文件叫Edit1.rc,编辑书写内容为

    TEDIT1 BITMAP  TEDIT1.bmp

    前面表示资源名称为TEDIT1 ,Bitmap表示是位图资源  TEDIT1.bmp指定的就是位图的文件了

    rc文件建立好了之后,运行命令brcc32 文件路径\Edit1.rc

    此时,就会在对应的文件夹下生成一个Edit1.res的资源文件,我们将后缀改为dcr,那就是我们需要的那个资源文件了,然后我们再修改Testpackage.dpk的那个包文件代码

    最先打开的时候是

    代码
    {$R *.res}
    {$ALIGN 8}
    {$ASSERTIONS ON}
    {$BOOLEVAL OFF}
    {$DEBUGINFO ON}
    {$EXTENDEDSYNTAX ON}
    {$IMPORTEDDATA ON}
    {$IOCHECKS ON}
    {$LOCALSYMBOLS ON}
    {$LONGSTRINGS ON}
    {$OPENSTRINGS ON}
    {$OPTIMIZATION ON}
    {$OVERFLOWCHECKS OFF}
    {$RANGECHECKS OFF}
    {$REFERENCEINFO ON}
    {$SAFEDIVIDE OFF}
    {$STACKFRAMES OFF}
    {$TYPEDADDRESS OFF}
    {$VARSTRINGCHECKS ON}
    {$WRITEABLECONST OFF}
    {$MINENUMSIZE 1}
    {$IMAGEBASE $400000}
    {$IMPLICITBUILD ON}

    此时,我们在最开头添加一行{$R 'Edit1.dcr'},这个就表示包含进我们刚编辑完成的那个资源文件,然后再编译,就能看到为组件添加了新的图标,具体操作请看:

    然后看看,如何修改包文件的

        到此为止,组件的注册以及自定义组件的图标就全部讲解完成了! 下次再讲组件的卸载

     

    组件教程指南目录 

  • 相关阅读:
    成都磨子桥技工学校 / 数据结构 Challenge 4
    圆桌问题(网络流24题)
    试题库问题(网络流24题)
    [AHOI2005]航线规划
    [AMPPZ2014]The Prices
    方格取数(网络流24题)
    太空飞行计划问题(网络流24题)
    Linux 学习3
    Linux 学习2
    Linux 学习1
  • 原文地址:https://www.cnblogs.com/DxSoft/p/1722752.html
Copyright © 2011-2022 走看看