【 tulaoshi.com - 编程语言 】
第5部分 编译文件(第12页)
我们的下一个例子是一个在IDE中用VCL(可视化组件库)编写的程序。这个程序自动的形成框架窗口和资源文件,所以你不能从单一的源文件编译。但是他说明了delphi语言的一个重要的特性。除了多单元外,可以使用类和对象。
这个程序包括一个工程文件,和2个新的单元文件。首先,工程文件如下:program greeting;uses Forms, Unit1, Unit2;{$R *.res} // This directive links the project's resource file. //这是工程的资源文件指令行begin// Calls to global Application instance//调用全局的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类的一个实例。 10Unit1 looks like this:Unit1看起来像下面一样: unit Unit1;interfaceuses SysUtils, Types, Classes, Graphics, Controls, Forms, Dialogs;typeTForm1 = class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);end;varForm1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);beginForm2.ShowModal;end;end.Unti1创建一个命名为Tform1的类(从Tform派生)和这个类的一个实例,Form1.Tform1包含一个buttonButton1按钮, TButton类的一个实例和一个命名为Button1Click的过程,当用户点击Button1时被调用。Button1Click隐藏Form1显示Form2(通过调用Form2.ShowModal)。
Form2在Unit2中是被定义的 unit Unit2;interfaceuses SysUtils, Types, Classes, Graphics, Controls, Forms, Dialogs;typeTForm2 = class(TForm)Label1: TLabel;CancelButton: TButton;procedure CancelButtonClick(Sender: TObject);end;varForm2: TForm2;implementation11uses Unit1;{$R *.dfm}procedure TForm2.CancelButtonClick(Sender: TObject);beginForm2.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被关闭。