第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類的一個實例。
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被關閉。