1.5.1 项目组成
Delphi 为每个项目建立了相当数目的文件。这些文件中,一部分是在设计阶段产生的, 如项目文件(.DPR)、单元文件(.PAS)和窗体文件(.DFM)等。还有一些则是在编译阶段产生 的,如对象映射文件(.DSM)、编译单元文件(.DCU)等。当然,项目中还包括一些非 Delphi 生成的文件,如位图、图标、鼠标指针等资源文件。
这些文件一部分要由用户保存时命名。一部分文件由 Delphi 自动产生,这些文件的命 名主要取决于用户为项目和窗体所取的名称以及 Delphi 和系统欲定义的文件扩展名。这些 文件构成了一个完整项目,但常用的文件并不多,主要是项目文件(.DPR)、单元文件(.PAS)、 窗体文件(.DFM)以及一些资源文件。前面已经介绍了窗体文件,这里着重介绍单元文件和 项目文件。
1. 单元文件
单元文件是组成应用源代码的主要部分,无论是窗体事件处理过程还是单独的源代码 都保存在单元文件中。
单元文件可以分为两种:有窗体文件和无窗体文件。每当用户在项目中新建一个窗体, 例如使用【File】菜单的【New Form】命令新建窗体,都会自动产生一个单元文件。如果 用户需要产生一个无窗体文件,可以使用【File】菜单中的【New Unit】命令。
下面给出一个典型的有窗体的单元文件的结构。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm) Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
end.
代码首句指出了单元名,单元名必须与单元文件名保持一致。如果保存时文件名变为 “Myunit.pas”,则首句相应变为:
unit Myunit
代码中的“uses”语句指出了单元文件在编译时要链接哪些单元,如 Windows、Messages、 SysUtils、Classes、Graphics、Controls、Forms、Dialogs、StdCtrls 等,因为这些单元中包含 了编程中所调用的一些函数、对象等。
“type”语句为窗体的类声明。类声明中包括了窗体中的组件和事件响应过程名。如 语句“Button1: TButton;”指出了组件类型(TButton)和组件的 Name 属性(Button1),除处理 Name 属性外,设置其他属性不会影响单元文件源代码。
添加新的事件处理过程对单元文件的影响最大,每为一个事件定义一个处理过程,窗 体的类型定义下就会多出一行,执行部分中就会加入一个空白处理过程,窗体文件中也会 相应存入一些信息。例如,上面的“type”语句下定义了一个处理过程。
procedure TForm1.Button1Click(Sender: TObject);
而在实现部分(implementation)中,出现了一个空白处理过程。
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
用户可在“begin”和“end”之间添加自己的事件处理代码。
2. 项目文件
项目文件对应用至关重要。它由 Delphi 自动建立,一般用户不需要改变它。项目文件 是真正意义上的 Pascal 源代码文件。它描述了整个应用程序的结构及启动代码:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
begin
Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run;
end.
用户可以通过【Project】菜单的【View Source】命令来查看项目文件。 上面的代码首行给出了项目名称:
program Project1;
“uses”语句中列出了组成项目的单元文件,其中有些单元文件还有相应的窗体文件, 编译项目时,Delphi 将首先编译各个单元文件及其相应的窗体文件,然后再将其链接成可 执行文件。例如:
Unit1 in 'Unit1.pas' {Form1};
该语句说明项目包含了单元文件“unit1.pas”,而后面的括号对“{Form1}”则说明单 元文件有相应的窗体文件“Form1.dfm”。
接下来是编译指令“{$R *.RES}”,表示把项目中所有资源文件全部包括进来。“begin” 和“end”之间的代码段所起的作用是初始化应用程序、创建表单和启动应用程序。