第5部分 编译文件(第12页)
我们的下一个例子是一个在IDE中用VCL(可视化
组件库)编写的程序。这个程序自动的形成框架窗口和资源文件,所以你不能从单一的源文件编译。但是他说明了delphi语言的一个重要的特性。除了多单元外,可以使用类和对象。
这个程序包括一个工程文件,和2个新的单元文件。首先,工程文件如下:
uses Forms, Unit1, Unit2;
{$R *.res} // This directive links the project's resource file.
//这是工程的资源文件指令行
begin
//调用全局的Application 实例
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
在一个,我们的程序被命名为greeting。他用到了3个单元文件。
Forms 是vcl的一部分;Unitl是被联合了应用程序的主窗口;Unit2是被联合的另一个窗口。
这个程序调用了一联串的名为Application的对象,她是被定义在forms Unit单元的Tapplication类的一个实例。(每一个工程都自动得产生Application 对象。)两个命名为Createform的调用自Tapplication的方法。第一个调用CreateForm创建Form1,是一个定义在Unit1中的Tform1类的一个实例。第二个调用CreateForm,创建Form2,定义在Unit2中的Tfrom2类的一个实例。
10
Unit1 looks like this:
Unit1看起来像下面一样:
unit Unit1;
interface
uses SysUtils, Types, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.ShowModal;
end;
end.
Unti1创建一个命名为Tform1的类(从Tform派生)和这个类的一个实例,Form1.Tform1包含一个buttonButton1按钮, TButton类的一个实例和一个命名为Button1Click的过程,当用户点击Button1时被调用。Button1Click隐藏Form1显示Form2(通过调用Form2.ShowModal)。
Form2在Unit2中是被定义的
unit Unit2;
interface
uses SysUtils, Types, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm2 = class(TForm)
Label1: TLabel;
CancelButton: TButton;
procedure CancelButtonClick(Sender: TObject);
end;
var
Form2: TForm2;
implementation
11
uses Unit1;
{$R *.dfm}
procedure TForm2.CancelButtonClick(Sender: TObject);
begin
Form2.Close;
end;
end.
Unit2创建一个名为Tform2的类和这个类的一个实例,Form2。Tform2包含一个按钮(CancelButton, Tbutton的一个实例)和一个文本框(Label1, Tlabel的一个实例)。你不能在源代码中看到这个窗体,除了Label1显示标题读hello world!
Tform2声明和定义一个方法CancelButtonClick,在运行时用户按下CancelButton时被调用。这个过程(连同Unit1中的Form1.Button1Click)被称为一个事件句柄。因为是在程序运行时被响应的事件。事件句柄是定义在Form1和Form2窗体文件的特殊事件。当greeting程序开始运行,form1被显示,form2被隐藏。(默认情况下,只有在工程文件中创建的第一个窗口在运行时是可见得,她被称为工程主窗口。)当用户按下form1中的按钮时,form2,显示hello world!高热俄听。当用户按下CancelButton按钮或在标题栏上的Close按钮,Form2被关闭。