delphi构件制作方法简介

babyboymin

babyboymin

2016-01-29 14:15

delphi构件制作方法简介,delphi构件制作方法简介
 

  Delphi作为rad工具,以其快速编译和友好的可视化界面受到广泛欢迎。delphi提供了很多现成构件,而且随着版本更新不断增加新构件。另外还可以买到第三方开发的特色构件,或从因特网下载免费构件。这些构件足以支持一般应用系统开发。但应用开发人员仍有必要自己制作构件。采用构件形式可以把对象严密封装,并加上一层直观外壳,有利于软件调试和代码重用。开发群体以构件为功能单位分工协作,比较容易实现工程化管理,从软件规划设计到测试修改都可以减少意外差错,大大提高工作效率。成熟的构件还可以作为商品软件出售,带来附加效益,且有利于软件开发的社会化分工协作。delphi的构件使用和构件制作采用同样的工作环境和相似的编程方法,只要弄清基本原理,制作构件无需学习多少新东西。

基本概念

制作构件的基本过程可以概括为:

1.编写构件单元(unit)。其中包含构件声明和构件实现代码。

2.按照与普通delphi单元同样的方法编译和调试构件单元。

3.创建构件注册单元。其中用uses语句连接构件单元,并用register过程完成构件的注册。

4.编写构件联机帮助信息,并编译成标准windows帮助文件。

  全部工作完成后,生成构件单元二进制文件(.dcu)、构件注册源文件(.pas)和帮助信息文件(.hlp)及附加的关键词文件(.kwf)。用户拿到这些文件后,就可以安装使用了。在delphi环境下调用菜单命令,启动安装过程(安装过程中需指定注册文件名),可以把构件注册到delphi的vcl库中,并在构件工具条上生成一个新按钮。借助helpinst安装工具可以把关键词文件并入dephi帮助索引系统,用f1键实现联机帮助。

  这样制作出的.dcu文件与一般delphi单元没有根本区别,即使不安装到vcl库中也可以由其他单元直接调用。最大的区别在于:构件单元中某些属性和事件声明为published,从而在程序设计期对用户是可见的,用户可以通过对象编辑窗口(objectinspector)访问这些属性和事件。这是可视化程序设计的关键所在。

对象的继承与修改

  制作构件第一件事就是选择适当的delphi对象类型作为父对象,以派生新的对象。子对象可以继承父对象的全部非private部件,但不能摆脱不需要的部件。因此,所选父对象应尽可能多地包含子对象所需的属性、事件和方法,但不应包含子对象不需要的东西。

  tcomponent是所有delphi构件的基点,但若直接从tcomponent派生新构件,很多东西就需要自己从头做起。一般只有非可视构件才直接从tcomponent派生。delphi提供了若干专门用于制作控件(可视构件)的对象类型,都是从tcontrol和twincontrol派生而来。其派生关系如下:

tcontrol---tgraphiccontrol---tcustomlabel
twincontrol--tcustomcontrol---tcustomgrid
---tbuttoncontrol--tcustomgroupbox
---tscrollingwincontrol--tcustompanel
---tcustomcombobox
---tcustomedit
---tcustomlistbox

  tcontrol的子类型用于非窗口式控件,twincontrol的子类型则用于窗口式控件。除非特殊需要,一般不直接从tcontrol和twincontrol派生新控件,而是从其子类型派生。这样可以充分利用原有的属性、事件和方法,减少很多工作量。

  在这些构件类型中,非通用的属性、事件和方法都声明为protected。这样可以禁止构件用户访问,又能被子类型继承和修改。在新构件中,可以简单地把继承来的属性和事件重新声明为published,使构件用户能在设计期通过对象编辑窗口访问,也可以进而修改属性的默认值和读写方式,或是重载(override)事件处理子过程和其他构件方法,以修改其中的程序代码。重声明可以放宽访问权限,但不能 相反,例如,不可能把published属性重声明为private或protected。

  为了增加新功能,常常需要定义全新的属性、事件和方法。定义时,一般总是把对用户开放的属性和事件声明为published,把方法声明为public或protected。

构件属性

  在构件中,属性和方法往往可以相互替代。对构件用户来说,属性比方法更直观简便。因此,只要可能,应尽量以属性取代方法。属性类型包括简单类型(numeric,character,string)、枚举类型、集合类型、对象类型(例如font)和数组类型(例如tstrings 类型中的strings)。其定义方法如下:

type
private
flayers:integer;{内部存储用的变量}
functiongetlayers:integer;{用来读属性值的方法}
proceduresetlayers(alayers:integer);{用来写属性值的方法}
published
propertylayers:
integerreadgetlayerswritesetlayersdefault1;
end;

  每个属性都需要相应的private变量用于内部存储。按照约定,变量名以f打头,后跟属性名(此处为layers),读写方法名称分别为ge

展开更多 50%)
分享

猜你喜欢

delphi构件制作方法简介

Delphi
delphi构件制作方法简介

吊炉烧饼的制作方法-吊炉烧饼的简介

电脑网络
吊炉烧饼的制作方法-吊炉烧饼的简介

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Delphi 应用编程实例简介

Delphi
Delphi 应用编程实例简介

LOADING制作方法

flash教程
LOADING制作方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

荷花灯制作方法 手工荷花灯制作方法

荷花灯 手工 手工教程
荷花灯制作方法 手工荷花灯制作方法

书签制作方法 手工书签制作方法有哪些

家有妙招 小学生手工制作 旧物改造
书签制作方法 手工书签制作方法有哪些

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

教你如何榨干PHP

教你如何榨干PHP

Delphi中实现多线程同步查询(2)

Delphi中实现多线程同步查询(2)
下拉加载更多内容 ↓