如何為Delphi程序添加事件和事件處理器
發(fā)布時間:2008-08-09 閱讀數(shù): 次 來源:網(wǎng)樂原科技
Delphi是一種功能很強的可視化程序開發(fā)工具。我們在使用Delphi開發(fā)WINDOWS 應用程序的過程中,雖然Delphi為每個可視化組件都提供了很多屬性(Property)和事件(Event),但在實際應用中可能會碰到一些自己需要的特殊事件,這些特殊事件Delphi 又沒有提供,這時我們就需要為應用程序添加這些特殊事件。當這些事件發(fā)生后,又能馬上調(diào)用處理這些事件的過程。本文通過實例來說明如何為應用程序添加事件和處理事件的過程。
在Delphi中,事件實際上是專門化的屬性,它是一個過程(procedure)的指針。要添加事件,首先應在所定義的類中說明一個用來指向事件過程的指針,該指針的作用是當事件一旦發(fā)生,就通過這個指針執(zhí)行所指向的處理這個事件的過程。最后通過指定符 published公布定義的事件屬性以及與之關聯(lián)的事件處理過程指針。
本例中,F(xiàn)tooBig為定義的事件處理過程指針,OnTooBig為事件屬性名。事件處理過程指針FtooBig通過程序的初始化使之指向過程TooBig1。在Delphi的表單(Form1)上放置三個編輯框,分別為Edit1、Edit2和Edit3,放一按鈕Button1。程序中設私有整型變量val1、val2和res,變量res用來記錄val1和val2的乘積,并用Edit3顯示出來。當通過Edit1和Edit2輸入的數(shù)據(jù)有一個大于100時,會觸發(fā)一個事件,并調(diào)用事件處理過程TooBig1顯示一個對話框,說明此事件已經(jīng)發(fā)生并已進行處理。源程序代碼如下, 該程序在Delphi 3中調(diào)試通過。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit; {輸入第一個整數(shù)}
Edit2: TEdit; {輸入第二個整數(shù)}
Edit3: TEdit; {輸出前二個整數(shù)的積}
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure TooBig1(Sender: TObject);
{當事件觸發(fā)后調(diào)用此過程}
procedure FormCreate(Sender: TObject);
private
val1,val2,res:integer; {val1和val2存放輸入的兩個整數(shù),res存放兩數(shù)的積}
FTooBig : TNotifyEvent; {定義一個指向事件處理器的指針FTooBig}
{ Private declarations }
public
{ Public declarations }
published
property OnTooBig:TNotifyevent read
FTooBig write FTooBig;{定義事件}
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
val1 := StrToInt(Edit1.Text);
val2 := StrToInt(Edit2.Text);
if(val1< 100)and(val2< 100) then
begin
res := val1*val2;
Edit3.Text := IntToStr(res);
end
else
if assigned(FTooBig) then OnTooBig(Self);
end;
procedure TForm1.TooBig1(Sender: TObject);
begin
Application.MessageBox('Too Big',' Test Event! ',MB_OK);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
val1:=1;
val2:=1;
FTooBig := TooBig1;{使事件處理指針指向事件處理器}
end;
end.