日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

delphi自定义事件处理

發(fā)布時間:2023/11/27 生活经验 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 delphi自定义事件处理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

http://www.cnblogs.com/ywangzi/archive/2012/09/06/2673414.html

delphi自定義事件處理

??????為什么我們點擊按鈕,就會執(zhí)行按鈕的onclick事件?這個事件是怎么和我們自己的代碼關(guān)聯(lián)起來的。相信很多人都有這個疑問。那么我們就通過一個自定義事件來了解這里面得運行原理。以乘法運算來顯示,如果乘數(shù)大于100,就提示用戶,太大了。這個事件用自定義事件定義。 大家先看一下最終效果,

??????我添加了三個文本框,一個按鈕,當?shù)谝换蛘叩诙€文本框的數(shù)>100時,點求積按鈕,提示Too Big 對話框。

??????完成自定義事件需要5步來做:

?????1.定義TNotifyEvent類型私有變量

????????

FTooBig:TNotifyEvent;

?

???????? FTooBig是一個指針,它可以保持事件方法的調(diào)用地址。

???? 2.公布一個屬性

?????????

published
??property?OnTooBig:TNotifyevent?read?FTooBig?write?FTooBig;

?

???????? OnTooBig這個屬性用來操作FTooBig這個私有變量,因為FTooBig是個函數(shù)指針,所以但讀這個變量時,也就調(diào)用了函數(shù)。

???? 3.定義事件處理函數(shù)

?


?????????procedure?TooBigEvent(Sender:?TObject);

?????????procedure?TForm1.TooBigEvent(Sender:?TObject);
?????????begin
?????????Application.MessageBox('Too?Big','Test?Event!',MB_OK);
?????????end;

?

???????? 這是當文本框數(shù)太大時執(zhí)行的方法。

?????4. 把事件處理函數(shù)賦值給TNotifyEvent私有變量

???????? FTooBig := TooBigEvent;

???? 5. 當條件符合時執(zhí)行事件處理函數(shù)

?


procedure?TForm1.Button1Click(Sender:?TObject);
var
??val1?:?integer;
??val2?:?integer;
??res??:?integer;
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;

?

???? 下面貼出全部代碼:

?


unit?Unit1;

interface

uses
??Windows,?Messages,?SysUtils,?Variants,?Classes,?Graphics,?Controls,?Forms,
??Dialogs,?StdCtrls;

type
??TForm1?=?class(TForm)
????Edit1:?TEdit;
????Edit2:?TEdit;
????Edit3:?TEdit;
????Button1:?TButton;
????procedure?TooBigEvent(Sender:?TObject);
????procedure?Button1Click(Sender:?TObject);
????procedure?FormCreate(Sender:?TObject);
??private

?????FTooBig:TNotifyEvent;?
????{?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);
var
??val1?:?integer;
??val2?:?integer;
??res??:?integer;
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.TooBigEvent(Sender:?TObject);
begin
Application.MessageBox('Too?Big','Test?Event!',MB_OK);
end;


procedure?TForm1.FormCreate(Sender:?TObject);
begin
FTooBig?:=?TooBigEvent;
end;

end.

轉(zhuǎn)載于:https://www.cnblogs.com/delphi-xe5/p/7476076.html

總結(jié)

以上是生活随笔為你收集整理的delphi自定义事件处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。