淺談Delphi中窗體的事件
Form窗體可以響應(yīng)各種各樣的時(shí)間,在Object Inspector的Events頁面中羅列了一大堆,如下圖:
下面將要列出一些常用的事件。
1、OnActivate
當(dāng)窗體被初始激活時(shí),就會(huì)發(fā)生OnActivate事件,當(dāng)初始創(chuàng)建窗體或者用戶從一個(gè)窗體切換到另一個(gè)窗體時(shí),就可能激活窗體,Application對象也有一個(gè)OnActivate事件,當(dāng)用戶從一個(gè)應(yīng)用程序切換到另一個(gè)應(yīng)用程序時(shí),就會(huì)產(chǎn)生此事件。
2、OnClose和OnCloseQuery
當(dāng)關(guān)閉一個(gè)應(yīng)用程序時(shí),就要發(fā)出OnClose事件,OnClose事件調(diào)用OnCloseQuery事件來看一看是否真的要關(guān)閉窗體,如果OnCloseQuery事件返回False,窗體就不會(huì)關(guān)閉。
3、OnCreate
當(dāng)窗體初始化創(chuàng)建時(shí),就會(huì)發(fā)生OnCreate事件,對特定窗體的任何實(shí)例,OnCreate事件只發(fā)生一次,OnCreate處理程序只是用來執(zhí)行任何啟動(dòng)任務(wù),這些啟動(dòng)任務(wù)對于窗體來說是需要的。
4、OnDestroy
OnDestroy事件是OnCreate的反事件,用來清除窗體動(dòng)態(tài)分配的所有內(nèi)存,或者做其他一些清理事務(wù)。
5、OnDragDrop
當(dāng)一個(gè)對象被拖放到窗體上時(shí),就會(huì)發(fā)生OnDragDrop事件,如果窗體支持拖放,那么就會(huì)對這個(gè)事件有所響應(yīng)。
6、OnMouseDown,OnMouseMove和OnMouseUp
就是窗體上響應(yīng)鼠標(biāo)點(diǎn)擊和鼠標(biāo)運(yùn)行。
7、OnPaint
每當(dāng)窗體需要重畫時(shí),就會(huì)發(fā)生OnPaint事件,有很多原因會(huì)導(dǎo)致這個(gè)事件發(fā)生。響應(yīng)這個(gè)事件,可以作為應(yīng)用程序所需要的任何畫圖,并隨時(shí)可以顯示出來。在大部分情況下,專用組件會(huì)自己畫圖,但有些情況下,我們需要自己動(dòng)手畫圖。
8、OnResize
每當(dāng)重新縮放窗體時(shí),就會(huì)發(fā)生OnResize事件,響應(yīng)這個(gè)事件可以調(diào)整窗體上的組件或者對窗體重畫。
9、OnShow
在窗體變成可見之前,就會(huì)發(fā)生OnShow事件。在窗體顯示之前,可以用這個(gè)事件完成圖昂提需要處理的任何事情。
Note
當(dāng)一個(gè)窗體創(chuàng)建時(shí),會(huì)產(chǎn)生很多事件,同樣的,當(dāng)一個(gè)窗體消失時(shí),也會(huì)產(chǎn)生很多事件。但這些事件是按什么次序發(fā)生的呢?當(dāng)窗體建立時(shí),發(fā)生事件的次序入下:
當(dāng)一個(gè)窗體消失時(shí),發(fā)生事件的次序如下:
在大部分情況下,直接保持這個(gè)次序不是很重要,但在有些情況下,它就變得至關(guān)重要。了解事件處理程序、構(gòu)造程序和析構(gòu)程序的調(diào)用次序是有好處的,起碼當(dāng)真正需要知道這個(gè)次序時(shí),可以避免不必要的嘗試。
原文鏈接:http://www.cnblogs.com/pchmonster/archive/2012/01/03/2311361.html
【編輯推薦】