📄 008.htm
字号:
<p>begin</p>
<p>Name :='';</p>
<p>YearHired := 1993;</p>
<p>Salary := 2000.00</p>
<p>Position := 'editor';</p>
<p>end; </p>
<p><font face="宋体" lang="ZH-CN">
您的程序可以将记录当成单一实体来操作: </p>
</font><p>PromptEmployee := NewEmployee;</p>
<p><font face="宋体" lang="ZH-CN">
以上介绍了用户常用的自定义类型。在</font>Delphi<font
face="宋体" lang="ZH-CN">的编程中,对象是非常重要的用户自定义数据类型。象记录一样,对象是结构化的数据类型,它包含数据的域</font>(Field)<font
face="宋体" lang="ZH-CN">,也包含作为方法的过程和函数。在</font>Delphi<font
face="宋体" lang="ZH-CN">中,当您向窗体中加入一个部件,也就是向窗体对象中加入了一个域;每一个部件也是对象,每当您建立一个事件处理过程使得部件可以响应一个事件时,您即自动地在窗体中加入了一个方法。在本章第</font>2<font
face="宋体" lang="ZH-CN">节中,将详细讲述</font>Delphi<font face="宋体"
lang="ZH-CN">面向对象编程的方法和技巧。 </p>
</font><p>2.1.10 Object Pascal<font face="宋体" lang="ZH-CN">的库单元</font>Unit </p>
<p> Units<font face="宋体" lang="ZH-CN">是常量、变量、数据类型、过程和函数的集合,而且能够被多个应用程序所共享。</font>Delphi<font
face="宋体" lang="ZH-CN">已经拥有许多预定义的程序库单元可供您建立您的程序库单元使用。</font>Delphi<font
face="宋体" lang="ZH-CN">的</font>Visual Component Library<font face="宋体"
lang="ZH-CN">由多个程序库单元组成,它们说明了对象、部件以供您的应用程序用来设计用户界面。例如,当您在窗体中加入一个</font>Check
Box<font face="宋体" lang="ZH-CN">时,</font>Delphi<font face="宋体" lang="ZH-CN">自动在您的程序库单元中加入了</font>Stdctrls<font
face="宋体" lang="ZH-CN">库单元,因为</font>TCheckBox<font face="宋体"
lang="ZH-CN">部件是在</font>StdCtrls<font face="宋体" lang="ZH-CN">库单元中说明的。</font></p>
<p><font face="宋体" lang="ZH-CN">
当您设计您的窗体时,</font>Delphi<font
face="宋体" lang="ZH-CN">自动建立一个和您的窗体有关的库单元。您的库单元不必都和窗体有关,也可以使用预定义的只包含数学运算函数的库单元,或是自行编写数学函数库单元。在一个库单元中所有的说明都相互有关系,例如,</font>CDialogs<font
face="宋体" lang="ZH-CN">程序库单元包含了在您的应用程序中使用的普通对话框的所有说明。 </p>
</font><p>2.1.10.1 Object Pascal<font face="宋体" lang="ZH-CN">程序库单元的结构 </p>
</font><p><font face="宋体" lang="ZH-CN">
不管一个库单元是否和一个窗体有关,库单元的结构都是相同的。其结构如下: </p>
</font><p>unit <<font face="宋体" lang="ZH-CN">库单元名称</font>> </p>
<p>interface </p>
<p>uses <<font face="宋体" lang="ZH-CN">选择性的库单元列表</font>></p>
<p>{<font face="宋体" lang="ZH-CN">公有说明} </p>
</font><p>implementation </p>
<p>uses <<font face="宋体" lang="ZH-CN">选择性的库单元列表</font>></p>
<p>{<font face="宋体" lang="ZH-CN">私有说明}</font></p>
<p>{<font face="宋体" lang="ZH-CN">过程和函数的执行部分}</font></p>
<p> initialization {<font face="宋体" lang="ZH-CN">选择性的}</font></p>
<p>{<font face="宋体" lang="ZH-CN">选择性的初始化程序}</font></p>
<p>end. </p>
<p>2.1.10.2 <font face="宋体" lang="ZH-CN">程序库单元的接口部分 </p>
</font><p> interface<font face="宋体"
lang="ZH-CN">是库单元的接口部分,它决定了本库单元对其他任何库单元或程序的可见</font>(<font
face="宋体" lang="ZH-CN">可访问</font>)<font face="宋体" lang="ZH-CN">部分。您可以在接口部分说明变量、常量、数据类型、过程和函数等等。</font>Delphi<font
face="宋体" lang="ZH-CN">在您设计窗体的库单元中,将窗体数据类型、窗体变量和事件处理过程都说明在这一部分。</font></p>
<p> interface<font face="宋体" lang="ZH-CN">标志库单元接口部分的开始。在</font>interface<font
face="宋体" lang="ZH-CN">中的说明对要使用这些说明的其他库单元或应用程序是可见的。一个库单元可以使用其他</font>Unit<font
face="宋体" lang="ZH-CN">的说明,只需要在</font>uses<font face="宋体"
lang="ZH-CN">子句中指明那些库单元即可。例如,您在库单元</font>A<font
face="宋体" lang="ZH-CN">中编写程序代码,且您想调用</font>UnitB<font
face="宋体" lang="ZH-CN">于</font>interface<font face="宋体" lang="ZH-CN">部分说明的程序。您可以把库单元</font>B<font
face="宋体" lang="ZH-CN">的名称加入到</font>A<font face="宋体" lang="ZH-CN">的</font>interface<font
face="宋体" lang="ZH-CN">部分的</font>uses<font face="宋体" lang="ZH-CN">子句中,则任何</font>A<font
face="宋体" lang="ZH-CN">中的程序都可以调用</font>B<font face="宋体"
lang="ZH-CN">中说明的程序。而且,如果</font>B<font face="宋体" lang="ZH-CN">中</font>interface<font
face="宋体" lang="ZH-CN">部分的</font>uses<font face="宋体" lang="ZH-CN">子句中出现</font>C<font
face="宋体" lang="ZH-CN">库单元,尽管</font>A<font face="宋体" lang="ZH-CN">中未曾出现</font>C<font
face="宋体" lang="ZH-CN">,</font>A<font face="宋体" lang="ZH-CN">同样可以调用</font>B<font
face="宋体" lang="ZH-CN">、</font>C<font face="宋体" lang="ZH-CN">库单元在</font>interface<font
face="宋体" lang="ZH-CN">中说明的程序。但如果</font>B<font face="宋体"
lang="ZH-CN">出现在</font>A<font face="宋体" lang="ZH-CN">的</font>interface<font
face="宋体" lang="ZH-CN">部分的</font>uses<font face="宋体" lang="ZH-CN">子句中,那么库单元</font>A<font
face="宋体" lang="ZH-CN">便不能出现在</font>B<font face="宋体" lang="ZH-CN">的</font>interface<font
face="宋体" lang="ZH-CN">的</font>uses<font face="宋体" lang="ZH-CN">子句中。因为这样会产生对库单元的循环访问。当试图编译时,会产生出现错误信息。 </p>
</font><p>2.1.10.3 <font face="宋体" lang="ZH-CN">程序库单元的实现部分 </p>
</font><p><font face="宋体" lang="ZH-CN">
实现部分</font>implementation<font
face="宋体" lang="ZH-CN">中包含</font>interface<font face="宋体" lang="ZH-CN">中说明的过程、函数、事件处理过程的具体实现程序代码。这一部分可以有自己的额外说明,但这些说明是私有的,外部程序不能调用这些说明。在</font>interface<font
face="宋体" lang="ZH-CN">中说明的函数实体必须在</font>implementation<font
face="宋体" lang="ZH-CN">部分出现,可以使用标题简写:只输入</font>procedure<font
face="宋体" lang="ZH-CN">或</font>function<font face="宋体" lang="ZH-CN">保留字,后面跟过程或函数的名称即可,其后则是程序的实现部分了。如果您在</font>implementation<font
face="宋体" lang="ZH-CN">部分说明任何常式,其标题并未出现在</font>interface<font
face="宋体" lang="ZH-CN">部分,则必须写全其标题部分。</font></p>
<p><font face="宋体" lang="ZH-CN"> 在</font>implementation<font
face="宋体" lang="ZH-CN">部分的</font>uses<font face="宋体" lang="ZH-CN">子句中指定的库单元,只供给本库单元的程序使用其</font>interface<font
face="宋体" lang="ZH-CN">中说明的程序。其他使用本库单元的库单元,不能访问这些在</font>implementation<font
face="宋体" lang="ZH-CN">的</font>udes<font face="宋体" lang="ZH-CN">子句中库单元的说明,因为在</font>implementation<font
face="宋体" lang="ZH-CN">后进行的库单元包含是私有的。所以上例中,如果</font>C<font
face="宋体" lang="ZH-CN">出现在</font>B<font face="宋体" lang="ZH-CN">的</font>implementation<font
face="宋体" lang="ZH-CN">部分,则</font>A<font face="宋体" lang="ZH-CN">不能使用</font>C<font
face="宋体" lang="ZH-CN">的公有部分,除非</font>C<font face="宋体"
lang="ZH-CN">出现在</font>A<font face="宋体" lang="ZH-CN">的</font>uses<font
face="宋体" lang="ZH-CN">子句中。在</font>implementation<font face="宋体"
lang="ZH-CN">中出现的循环访问是</font>Delphi<font face="宋体" lang="ZH-CN">所允许的,如果</font>A<font
face="宋体" lang="ZH-CN">的</font>implemetation<font face="宋体" lang="ZH-CN">的</font>uses<font
face="宋体" lang="ZH-CN">子句中出现</font>B<font face="宋体" lang="ZH-CN">,则</font>B<font
face="宋体" lang="ZH-CN">的</font>implementation<font face="宋体" lang="ZH-CN">部分也可以出现</font>A<font
face="宋体" lang="ZH-CN">。 </p>
</font><p>2.1.10.4 <font face="宋体" lang="ZH-CN">程序库单元的初始化部分 </p>
</font><p><font face="宋体" lang="ZH-CN">
初始化当前库单元所使用的数据,或是通过</font>interface<font
face="宋体" lang="ZH-CN">部分将数据提供给其他应用程序、库单元使用时,您可以在库单元中加入一个</font>initialization<font
face="宋体" lang="ZH-CN">部分,在库单元的</font>end<font face="宋体"
lang="ZH-CN">前加上您的初始化语句。当一个应用程序使用一个库单元时,在库单元中的</font>initialization<font
face="宋体" lang="ZH-CN">部分会先于其他的代码执行。如果一个应用程序使用了多个库单元,则每一个库单元的初始化部分都会在所有的程序代码前执行。 </p>
</font><p>2.1.10.5 <font face="宋体" lang="ZH-CN">使用</font>Delphi<font face="宋体"
lang="ZH-CN">的可视化部件及其库单元 </p>
</font><p><font face="宋体" lang="ZH-CN">
当您在窗体中加入可视化部件时,如果该部件在可视化部件库中,</font>Delphi<font
face="宋体" lang="ZH-CN">会在您的库单元的</font>interface<font face="宋体"
lang="ZH-CN">部分的</font>uses<font face="宋体" lang="ZH-CN">子句中自动加上需要使用的库单元名称。但有些对象在</font>Delphi<font
face="宋体" lang="ZH-CN">的环境中并没有可视化部件存在,例如,您想在库单元中加入一个预定义的信息框,则您必须把</font>MsgDlg<font
face="宋体" lang="ZH-CN">库单元加入您的</font>uses<font face="宋体"
lang="ZH-CN">子句中。如果您要使用</font>TPrinter<font face="宋体" lang="ZH-CN">对象的话,必须将</font>Printer<font
face="宋体" lang="ZH-CN">库单元加入</font>uses<font face="宋体" lang="ZH-CN">子句中。在在线帮助中可以查到对象所属的预定义库单元。</font></p>
<p><font face="宋体" lang="ZH-CN">
要使用在其他库单元中说明的函数,应在函数的前面加上这一库单元的名称,并用‘</font>.<font
face="宋体" lang="ZH-CN">’号隔开。例如,要在</font>Unit2<font face="宋体"
lang="ZH-CN">中使用</font>Unit1<font face="宋体" lang="ZH-CN">中说明的</font>Calculate<font
face="宋体" lang="ZH-CN">函数,应使用下面的方法:</font></p>
<p>Number := Unit1.Calculate(10);</p>
<p><font face="宋体" lang="ZH-CN">
您可以在任何标识符如属性、常量、变量、数据类型、函数等之前加上库单元的名称。您可以在自由地在任何</font>Delphi<font
face="宋体" lang="ZH-CN">库单元中加入程序代码,但不要改变由</font>Delphi<font
face="宋体" lang="ZH-CN">生成的程序。 </p>
</font><p>2.1.10.6 <font face="宋体" lang="ZH-CN">建立与窗体无关的新库单元 </p>
</font><p><font face="宋体" lang="ZH-CN">
如果您想在工程中建立一个和任何窗体无关的新库单元,可以现选用</font>File|New
Unit<font face="宋体" lang="ZH-CN">。这时一个新的库单元加入了工程,新库单元的代码如下: </p>
</font><p>unit Unit2;</p>
<p>interface</p>
<p>implementation</p>
<p>end. </p>
<p> Delphi<font face="宋体" lang="ZH-CN">将根据您的工程中的文件数目为您的库单元选择名称,您可以在程序骨架间加入您的程序代码。</font></p>
<p><font face="宋体" lang="ZH-CN">
当编译您的工程时,这个新加入的库单元会被编译为一个具有</font>.DCU<font
face="宋体" lang="ZH-CN">后缀的文件。这个新生成的文件是链接到工程的可执行文件上的机器代码。</font></p>
<hr color="#EE9B73" size="1" width="94%">
</TD>
<TD CLASS="tt3" VALIGN="bottom" width="8%" background="bg.gif"><strong><A HREF="009.htm" ><FONT style="FONT-SIZE: 9pt">后一页</font></A><BR>
<A HREF="007.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>
</TR>
</table>
</BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -