📄 047.htm
字号:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->DELPHI基础教程-->第十九章 Delphi自定义部件开发(一)</TITLE>
<META NAME="keywords" CONTENT=" DELPHI基础教程 第十九章 Delphi自定义部件开发(一)">
<META NAME="description" CONTENT=" - DELPHI基础教程 - 第十九章 Delphi自定义部件开发(一)">
<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋体"}
.tt2 {font: 12pt/15pt "宋体"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 bgcolor="#FFFFFF" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">
<TABLE WIDTH="100%" CELLPADDING=10 CELLSPACING=0 BORDER=0>
<TR>
<TD CLASS="tt3" VALIGN="top" width="8%" bgcolor="#e0e0e0"><strong><A HREF="048.htm"><FONT style="FONT-SIZE: 9pt">后一页</font></A><BR>
<A HREF="046.htm"><FONT style="FONT-SIZE: 9pt">前一页</font></A><BR>
<A HREF="index.html"><FONT style="FONT-SIZE: 9pt">回目录</font></A><BR>
<A HREF="../../../../index.htm"><FONT style="FONT-SIZE: 9pt">回首页</font></A><BR>
</strong>
</TD>
<TD class="tt2" bgcolor="#F5F8F8" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷体_GB2312">第十九章 Delphi自定义部件开发(一)</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
<p> <font face="Arial" size="3">Delphi</font>除了支持使用可视化部件所见即所得地建立应用程序外,还支持为开发应用而设计自己的部件。</p>
<p> 在本章中将阐述如何为</font><font face="Arial" size="3">Delphi</font><font
face="宋体" lang="ZH-CN" size="3">应用程序编写部件。这一章将达到两个目的:</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋体" lang="ZH-CN"
size="3">教你如何自定义部件</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋体" lang="ZH-CN"
size="3">使你的部件成为</font><font face="Arial" size="3">Delphi</font><font
face="宋体" lang="ZH-CN" size="3">环境的有机组合部分</font><font face="Arial"
size="3"></p>
<p> </p>
<p>19.1 Delphi</font><font face="宋体" lang="ZH-CN" size="3">部件原理</p>
<p> </font><font face="Arial" size="3"></p>
<p>19.1.1 </font><font face="宋体" lang="ZH-CN" size="3">什么是部件</p>
<p> </p>
<p> 部件是</font><font face="Arial" size="3">Delphi</font><font face="宋体"
lang="ZH-CN" size="3">应用程序的程序构件。尽管大多数部件代表用户界面的可见元素,但部件也可以是程序中的不可见元素,如数据库部件。为弄清什么是部件可以从三个方面来考察它:功能定义、技术定义和经验定义。</p>
<p> </font><font face="Arial" size="3">1. </font><font face="宋体" lang="ZH-CN"
size="3">部件的功能定义</p>
<p> 从最终用户角度,部件是在</font><font face="Arial" size="3">Component
Palette</font><font face="宋体" lang="ZH-CN" size="3">上选择的,并在窗体设计窗口和代码窗口中操作的元素。从部件编写者角度,部件是代码中的对象。在编写部件之前,你应用相当熟悉已有的</font><font
face="Arial" size="3">Delphi</font><font face="宋体" lang="ZH-CN" size="3">部件,这样才能使你的部件适合用户的需要。编写部件的目标之一是使部件尽可能的类似其它部件。</p>
<p> </font><font face="Arial" size="3">2. </font><font face="宋体" lang="ZH-CN"
size="3">部件的技术定义</p>
<p> 从最简单的角度看,部件是任何从</font><font face="Arial" size="3">TComponent</font><font
face="宋体" lang="ZH-CN" size="3">继承的对象。</font><font face="Arial" size="3">TComponent</font><font
face="宋体" lang="ZH-CN" size="3">定义了所有部件必须要的、最基本的行为。例如,出现在</font><font
face="Arial" size="3">Component Palette</font><font face="宋体" lang="ZH-CN" size="3">上和在窗体设计窗口中编辑的功能。但是</font><font
face="Arial" size="3">TComponent</font><font face="宋体" lang="ZH-CN" size="3">并不知如何处理你的部件的具体功能,因此,你必须自己描述它。</p>
<p> </font><font face="Arial" size="3">3. </font><font face="宋体" lang="ZH-CN"
size="3">部件编写者自己的定义。</p>
<p> 在实际编程中,部件是能插入</font><font face="Arial" size="3">Delphi</font><font
face="宋体" lang="ZH-CN" size="3">开发环境的任何元素。它可能具有程序的各种复杂性。简而言之,只要能融入部件框架,部件就是你用代码编写的一切。部件定义只是接口描述,本章将详细阐述部件框架,说明部件的有限性,正如说明编程的有限性。本章不准备教你用所给语言编写每一种部件,只能告诉编定代码的方法和怎样使部件融入</font><font
face="Arial" size="3">Delphi</font><font face="宋体" lang="ZH-CN" size="3">环境。</p>
<p> </font><font face="Arial" size="3"></p>
<p>19.1.2 </font><font face="宋体" lang="ZH-CN" size="3">编写部件的不同之处</p>
<p> </p>
<p> 在</font><font face="Arial" size="3">Delphi</font><font face="宋体"
lang="ZH-CN" size="3">环境中建立部件和在应用程序中使用部件有三个重要差别:</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋体" lang="ZH-CN"
size="3">编写部件的过程是非可视化的</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋体" lang="ZH-CN"
size="3">编写部件需要更深入的关于对象的知识</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋体" lang="ZH-CN"
size="3">编写部件需要遵循更多的规则</p>
<p> </p>
<p> </font><font face="Arial" size="3">1. </font><font face="宋体" lang="ZH-CN"
size="3">编写部件是非可视化的</p>
<p> 编写部件与建立</font><font face="Arial" size="3">Delphi</font><font
face="宋体" lang="ZH-CN" size="3">应用最明显的区别是部件编写完全以代码的形式进行,即非可视化的</font><font
face="Arial" size="3"> </font><font face="宋体" lang="ZH-CN" size="3">。因为</font><font
face="Arial" size="3">Delphi</font><font face="宋体" lang="ZH-CN" size="3">应用的可视化设计需要已完成的部件,而建立这些部件就需要用</font><font
face="Arial" size="3">Object Pascal </font><font face="宋体" lang="ZH-CN" size="3">代码编写。</p>
<p> 虽然你无法使用可视化工具来建立部件,但你能运用</font><font
face="Arial" size="3"> Delphi</font><font face="宋体" lang="ZH-CN" size="3">开发环境的所有编程特性如代码编辑器、集成化调试和对象浏览。</p>
<p> </font><font face="Arial" size="3">2. </font><font face="宋体" lang="ZH-CN"
size="3">编写部件需要更深的有关对象的知识</p>
<p> 除了非可视化编程之外,建立部件和使用它们的最大区别是:当建立新部件时,需要从已存部件中继承产生一个新对象类型,并增加新的属性和方法。另一方面,部件使用者,在建立</font><font
face="Arial" size="3">Delphi</font><font face="宋体" lang="ZH-CN" size="3">应用时,只是使用已有部件。在设计阶段通过改变部件属性和描述响应事件的方法来定制它们的行为。</p>
<p> 当继承产生一个新对象时,你有权访问祖先对象中对最终用户不可见的部分。这些部分被称为</font><font
face="Arial" size="3">protected</font><font face="宋体" lang="ZH-CN" size="3">界面的。在很大部分的实现上,后代对象也需要调用他们的祖先对象的方法,因此,编写部件者应相当熟悉面向对象编程特性。</p>
<p> </font><font face="Arial" size="3">3. </font><font face="宋体" lang="ZH-CN"
size="3">编写部件要遵循更多的规则</p>
<p> 编写部件过程比可视化应用生成采用更传统的编程方法,与使用已有部件相比,有更多的规则要遵循。在开始编写自己的部件之前,最重要的事莫过于熟练应用</font><font
face="Arial" size="3">Delphi</font><font face="宋体" lang="ZH-CN" size="3">自带的部件,以得到对命名规则以及部件用户所期望功能等的直观认识。部件用户期望部件做到的最重要的事情莫过于他们在任何时候能对部件做任何事。编写满足这些期望的部件并不难,只要预先想到和遵循规则。</p>
<p> </font><font face="Arial" size="3"></p>
<p>19.1.3 </font><font face="宋体" lang="ZH-CN" size="3">建立部件过程概略</p>
<p> </p>
<p> 简而言之,建立自定义部件的过程包含下列几步: </font><font
face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3">●</font><font face="Arial" size="3">
</font><font face="宋体" lang="ZH-CN" size="3">建立包含新部件的库单元</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋体" lang="ZH-CN"
size="3">从已有部件类型中继承得到新的部件类型</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋体" lang="ZH-CN"
size="3">增加属性、方法和事件</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋体" lang="ZH-CN"
size="3">用</font><font face="Arial" size="3">Delphi</font><font face="宋体"
lang="ZH-CN" size="3">注册部件</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋体" lang="ZH-CN"
size="3">为部件的属性方法和事件建立</font><font face="Arial" size="3">Help</font><font
face="宋体" lang="ZH-CN" size="3">文件</p>
<p> </p>
<p> 如果完成这些工作,完整的部件包含下列</font><font face="Arial"
size="3">4</font><font face="宋体" lang="ZH-CN" size="3">个文件</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋体" lang="ZH-CN"
size="3">编译的库单元 </font><font face="Arial" size="3"> ( .DCU</font><font
face="宋体" lang="ZH-CN" size="3">文件</font><font face="Arial" size="3">)</p>
<p></font><font face="宋体" lang="ZH-CN" size="3">●</font><font face="Arial" size="3">
</font><font face="宋体" lang="ZH-CN" size="3">选择板位图 </font><font
face="Arial" size="3"> (.DCR</font><font face="宋体" lang="ZH-CN" size="3">文件</font><font
face="Arial" size="3">)</p>
<p></font><font face="宋体" lang="ZH-CN" size="3">●</font><font face="Arial" size="3">
Help</font><font face="宋体" lang="ZH-CN" size="3">文件 </font><font
face="Arial" size="3"> (.HLP</font><font face="宋体" lang="ZH-CN" size="3">文件</font><font
face="Arial" size="3">)</p>
<p></font><font face="宋体" lang="ZH-CN" size="3">●</font><font face="Arial" size="3">
Help-keyword</font><font face="宋体" lang="ZH-CN" size="3">文件</font><font
face="Arial" size="3"> (.KWF</font><font face="宋体" lang="ZH-CN" size="3">文件</font><font
face="Arial" size="3">)</p>
<p> </p>
<p>19.2 Delphi</font><font face="宋体" lang="ZH-CN" size="3">部件编程方法</p>
<p> </font><font face="Arial" size="3"></p>
<p>19.2.1 Delphi</font><font face="宋体" lang="ZH-CN" size="3">部件编程概述</p>
<p> </font><font face="Arial" size="3"></p>
<p>19.2.1.1 Delphi</font><font face="宋体" lang="ZH-CN" size="3">可视部件类库</p>
<p> </p>
<p> </font><font face="Arial" size="3"> Delphi</font><font face="宋体" lang="ZH-CN"
size="3">的部件都是可视部件类库(</font><font face="Arial" size="3">VCL</font><font
face="宋体" lang="ZH-CN" size="3">)的对象继承树的一部分,下面列出组成</font><font
face="Arial" size="3">VCL</font><font face="宋体" lang="ZH-CN" size="3">的对象的关系。</font><font
face="Arial" size="3">TComponent</font><font face="宋体" lang="ZH-CN" size="3">是</font><font
face="Arial" size="3">VCL</font><font face="宋体" lang="ZH-CN" size="3">中每一个部件的共同祖先。</font><font
face="Arial" size="3">TComponent</font><font face="宋体" lang="ZH-CN" size="3">提供了</font><font
face="Arial" size="3">Delphi</font><font face="宋体" lang="ZH-CN" size="3">部件正常工作的最基本的属性和事件。库中的各条分支提供了其它的更专一的功能。 </p>
</font><font face="Arial" size="3"><p></font><font face="宋体" lang="ZH-CN" size="3">当建立部件时,通过从对象树中已有的对象继承获得新对象,并将其加入</font><font
face="Arial" size="3">VCL</font><font face="宋体" lang="ZH-CN" size="3">中。 </p>
</font><font face="Arial" size="3"><p>19.2.1.2 </font><font face="宋体" lang="ZH-CN"
size="3">建立部件的起点 </p>
<p> 部件是你在设计时想操作的任意程序元素。建立新部件意味着从已有类型中继承得到新的部件对象类。</font><font
face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3">建立新部件的主要途径如下:</p>
<p> </font><font face="Arial" size="3"> </font><font face="宋体" lang="ZH-CN" size="3">●</font><font
face="Arial" size="3"> </font><font face="宋体" lang="ZH-CN" size="3">修改已有的控制</p>
<p> ●</font><font face="Arial" size="3"> </font><font face="宋体" lang="ZH-CN"
size="3">建立原始控制</font><font face="Arial" size="3"></p>
<p></font><font face="宋体" lang="ZH-CN" size="3"> ●</font><font face="Arial"
size="3"> </font><font face="宋体" lang="ZH-CN" size="3">建立图形控制</p>
<p> </font><font face="Arial" size="3"> </font><font face="宋体" lang="ZH-CN" size="3">●</font><font
face="Arial" size="3"> </font><font face="宋体" lang="ZH-CN" size="3">建立</font><font
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -