第11章组件开发技术 本章要点: 区组件的概念 区开发组件的一般步骤 x M Delphi中的相关类 区创建组件单元的方法 区为组件添加属性、事件和方法 组件的调试与安装
第11章 组件开发技术 本章要点: 组件的概念 开发组件的一般步骤 Delphi中的相关类 创建组件单元的方法 为组件添加属性、事件和方法 组件的调试与安装
11.1循序渐进学理论 1111组件与组件技术概述 组件概念 组件是模块化程序设计方法发展到一定阶段的产 Y物,在软件工程的角度米考虑,开发者总是希望把 个庞大的应用程序划分成多个模块。其中,每个模块 都保持一定的功能独立性,在协同工计良好的应用系 统往往被切分成一些组件,这些组件可以单独开发、 单独编译,甚至单独调试和测试。当所有的组件开发 完成后,把他们组合在一起就得到了完整的应用系统。 当系统的外作时,通过相互之间的接口来完成实际的 任务。我们把每一个这样的模块称之为组件
11.1 循序渐进学理论 11.1.1 组件与组件技术概述 1.组件概念 组件是模块化程序设计方法发展到一定阶段的产 物,在软件工程的角度来考虑,开发者总是希望把一 个庞大的应用程序划分成多个模块。其中,每个模块 都保持一定的功能独立性,在协同工计良好的应用系 统往往被切分成一些组件,这些组件可以单独开发、 单独编译,甚至单独调试和测试。当所有的组件开发 完成后,把他们组合在一起就得到了完整的应用系统。 当系统的外作时,通过相互之间的接口来完成实际的 任务。我们把每一个这样的模块称之为组件
2.从一个实际的组件看组件的组成 (1)组件的声明 组件的声明其实就是类的声明。代码的一开始用 Class声明了一个名为 TButton的类,该类的基类是 TButton Control。类的成分有四种,分别是 Private、 Protected、 Public和 published (2)方法 在组件中用 Procedure或 Function定义的过程或函 数均是方法,方法可以被外界调用
2.从一个实际的组件看组件的组成 (1)组件的声明 组件的声明其实就是类的声明。代码的一开始用 Class声明了一个名为TButton的类,该类的基类是 TButtonControl。类的成分有四种,分别是Private、 Protected、Public和published。 (2)方法 在组件中用Procedure或Function定义的过程或函 数均是方法,方法可以被外界调用
(3)属性 在组件的定义中需要特别注意的是 property关键字, 该关键字用于组件属性的声明,声明属性时可用read 关键字标识了属性的读取方法,用 write关键字标识属 性的赋值方法。如代码中的语句: property Default: Boolean read FDefault write SetDefault default false (4)事件 事件是一类特殊的属性,实际上它是一个函数或 过程的指针,也可以是系统指供的特定的名称。如代 码中的语句: property OnMouseDown property OnMouseMove
(3)属性 在组件的定义中需要特别注意的是property关键字, 该关键字用于组件属性的声明,声明属性时可用read 关键字标识了属性的读取方法,用write关键字标识属 性的赋值方法。如代码中的语句: property Default:Boolean read FDefault write SetDefault default False; (4)事件 事件是一类特殊的属性,实际上它是一个函数或 过程的指针,也可以是系统指供的特定的名称。如代 码中的语句: property OnMouseDown; property OnMouseMove;
3.开发组件的一般步骤 创建一个组件,大致可以分为以下6个步骤。 (1)确定一个基类 (2)创建一个组件单元。 (3)在新组件中添加属性、方法和事件。 (4)测试该组件。 (5)在 Delphi中注册该组件。 (6)为该组件建立帮助文件
3.开发组件的一般步骤 创建一个组件,大致可以分为以下6个步骤。 (1)确定一个基类。 (2)创建一个组件单元。 (3)在新组件中添加属性、方法和事件。 (4)测试该组件。 (5)在Delphi中注册该组件。 (6)为该组件建立帮助文件
111.2确定组件基类 1. Delph组件结构 Tob」ect Exception TInterfacedObject TStream TPersistent TComobject TGraphic Object TGraphic TComponent TCollection TStrings 「 Application DAtasEt MEnu TControl TCommonDialog TField Most visual GRaphic Control TWin Contro|产 controis inherit 和m7 Win contro产 TScrollingwin Control CUstom Control TCustomForm TForm TActiveForm
11.1.2 确定组件基类 1.Delphi组件结构
2.几种常用的基类 (1) TWin control类 TWin Contro对象的特征 ①有窗口句柄 ②能够接受输入焦点 ③能够作为其他组件的父组件 (2) TGraphic Contro类 TGraphicControl是图形组件类,图形组件也属于 可视组件,但它与 TWin Contro有很大不同,它没有 句柄,不能获得焦点,也不能作为其他组件的父组件 这类组件的缺点是难以和用户交互,其优点是节省系 统资源,而且有较快的图形绘制速度
2.几种常用的基类 (1)TWinControl类 TWinControl对象的特征 : ①有窗口句柄 ②能够接受输入焦点 ③能够作为其他组件的父组件 (2)TGraphicControl类 TGraphicControl是图形组件类,图形组件也属于 可视组件,但它与TWinControl有很大不同,它没有 句柄,不能获得焦点,也不能作为其他组件的父组件。 这类组件的缺点是难以和用户交互,其优点是节省系 统资源,而且有较快的图形绘制速度
(3) CUstom Control类 常用的可视组件一般都从以 TCusto开头的类派生, 实际上在 CUstom类中已经实现了组件的属性、方法 和事件,只不过它们的成员都是 Protected,即对于外 部是不可见的,无法被使用,而在它的派生类里才将 这些属性和方法公开。 下面我们通过开发一个实际的剪切板文字查看组件 来说明组件的开发过程。剪切板查看组件具有以下功 (1)该组件的基类是 PAnel组件,能够通过属性设置 它的标题和是否可见,组件名为“ Clip boardⅤ Viewer (2)当剪切板中存放的是文本信息时,且当文本发 生变化时,将发生一个名为 Clip Change Text的事 件,该事件有一个参数Text用来传递剪切板上的数据
(3)TCustomControl类 常用的可视组件一般都从以TCustom开头的类派生, 实际上在TCustom类中已经实现了组件的属性、方法 和事件,只不过它们的成员都是Protected,即对于外 部是不可见的,无法被使用,而在它的派生类里才将 这些属性和方法公开。 下面我们通过开发一个实际的剪切板文字查看组件 来说明组件的开发过程。剪切板查看组件具有以下功 能: (1)该组件的基类是TPanel组件,能够通过属性设置 它的标题和是否可见,组件名为“ClipBoardViewer”。 (2)当剪切板中存放的是文本信息时,且当文本发 生变化时,将发生一个名为ClipBoardChangeText的事 件,该事件有一个参数Text用来传递剪切板上的数据
111.3创建组件单元 用户可以自己编写一个实现组件类功能的 组件单元,但这比较麻烦。用户也可以通过 菜单来创建新组件单元,创建的步骤如下: (1)执行【 Component】→【 New Component】菜单 命令。将会出现【新建组件】对话框。 (2)指定组件的基类。指定方法是在【 Ancestor type】 后面的列表框中选择相应的基类名,本题选择 TCustomPanel。 (3)设定组件名。在【 Class name】后面的文本框中 输入类名,本题输入的类名为“ TClipBoardViewer
11.1.3 创建组件单元 用户可以自己编写一个实现组件类功能的 组件单元,但这比较麻烦。用户也可以通过 菜单来创建新组件单元,创建的步骤如下: (1)执行【Component】→【New Component】菜单 命令。将会出现【新建组件】对话框。 (2)指定组件的基类。指定方法是在【Ancestor type】 后面的列表框中选择相应的基类名,本题选择 TCustomPanel。 (3)设定组件名。在【Class Name】后面的文本框中 输入类名,本题输入的类名为“TClipBoardViewer
(4)设定组件出现在哪一个组件页中。在 【 Palette Page】后面的列表框中可以选择一个组件页, 本题选择【 Samples】组件页,该组件注册过后将会 出现【 Samples】组件页中 (5)指定组件单元的保存位置和名称。在【Unit file name:】后的文本框中输入组件单元存放的路径 和单元文件名,单元文件名和类名相同(不包含开头 的字母T) (6)自动创建组件单元。设置完成后如图11-3所 示,此时按【OK】按钮系统将自动创建组件单元
(4)设定组件出现在哪一个组件页中。在 【Palette Page】后面的列表框中可以选择一个组件页, 本题选择【Samples】组件页,该组件注册过后将会 出现【Samples】组件页中。 (5)指定组件单元的保存位置和名称。在【Unit file name:】后的文本框中输入组件单元存放的路径 和单元文件名,单元文件名和类名相同(不包含开头 的字母T)。 (6)自动创建组件单元。设置完成后如图11-3所 示,此时按【OK】按钮系统将自动创建组件单元