======================================================
注:本文源代碼點此下載
======================================================
在delphi應用程序開發中,程序設計人員的大部分工作是在組件的事件句柄中添加自己的程序代碼,以實現具體的應用。在開發一些較大的應用程序時,爲了完善程序的功能,使用戶用起來方便、靈活,通常需要增加大量的組件,其中一些組件的事件句柄內容可能完全相同。如一個菜單項和與之有相同功能的按鈕(如button1)的onclick事件;還有一些內容大部分相同,如button1的onclick事件改變edit1的某些屬性,button2的onclick事件改變edit2的同樣屬性,兩段代碼內容中除了名稱(edit1和edit2)不同外,其他完全相同。在編寫代碼時,雖然可以通過複製、粘貼、替換簡化操作,但還是增大了程序的開發工作量和執行文件的大小。那麼有沒有解決上述問題的方法呢?
答案是肯定的,這就是使用事件句柄過程中的sender參數。目前市面上有關delphi的書籍中,對此參數進行討論的部分不多。事實上這個參數非常重要,正是它告訴我們某個過程當前的調用者是哪一個組件。
下面通過建立一個簡單的程序,介紹如何使用sender參數簡化delphi的編程代碼。
新建一個應用程序,在form1上添加兩個按鈕組件(button1和button2)和一個文本框組件(edit1)。
button1的onclick事件代碼如下:
procedure tform1.button1click(sender: tobject);
begin
with sender as tbutton do
begin
edit1.text:=name;
enabled:=false;
width:=100;
height:=100;
end;
end;
選中button2,在object inspector的events屬性頁上選擇onclick事件,下拉該事件右邊的組合框,選擇已有的button1click事件句柄名字。這樣,按f9編譯執行後,分別單擊button1和button2按鈕,就可以發現通過利用一段相同的代碼,實現了對不同組件屬性的控制。同時,在代碼編輯器中只顯示一個公共的事件句柄,而不是爲每一個組件都重複顯示這個句柄。
以上介紹的是sender參數在同類(tbutton)組件間的使用方法,有興趣的讀者可以試一試不同類的組件間sender參數的使用方法。下面是修改後的button1的onclick事件代碼:
procedure tform1.button1click(sender: tobject);
begin
if sender is tbutton then
begin
with sender as tbutton do
begin
edit1.text:=name;
enabled:=false;
width:=100;
height:=100;
end;
end;
if sender is tedit then
begin
with sender as tedit do
begin
edit1.text:=name;
enabled:=false;
width:=100;
height:=100;
end;
end;
end;
選中edit1,在object inspector的events屬性頁上選擇onclick事件,下拉該事件右邊的組合框,選擇已有的button1click事件名柄名字即可。
======================================================
在最後,我邀請大家參加新浪APP,就是新浪免費送大家的一個空間,支持PHP+MySql,免費二級域名,免費域名綁定 這個是我邀請的地址,您通過這個鏈接註冊即爲我的好友,並獲贈雲豆500個,價值5元哦!短網址是http://t.cn/SXOiLh我創建的小站每天訪客已經達到2000+了,每天掛廣告賺50+元哦,呵呵,飯錢不愁了,\(^o^)/