最近做乙個元件compont,需要獲取控制項的事件並進行處理,
在delphi中,乙個控制項的處理函式設定好之後,它原來的處理函式就失效了,我想實現的機制
是如c#中的事件**一樣,
乙個+=就可以實現對乙個事件新增多個處理函式,但delphi中並沒有這樣的機制,不過還是有辦
法解決的:
比如我在窗體中定義了乙個按鈕button1,它的預設onclick處理函式為button1click(sender :
tobject);我要為它的onclick事件新增乙個處理函式,並且不影響這個button1click函式的執行
首先,宣告乙個與事件型別相同的物件a。
然後,對將這個物件a賦值為原有的處理函式b
將原有的處理函式b賦值為新的處理函式c
在c函式中,使用if assigned(a) then a(sender);即可。
比如button的onclick事件,型別為tnotifyevent,可以這樣:
tmpbuttonclick : tnotifyevent;
procedure newbuttononclick(sender:tobject);
在formshow事件中:
tmpbuttonclick := button1.onclick;
button1.onclick := newbuttononclick;
在newbuttononclick中執行完所需功能之後:
if assigned(tmpbuttonclick) then
tmpbuttonclick(sender);
如何為Delphi程式新增事件和事件處理器
delphi是一種功能很強的視覺化程式開發工具。我們在使用delphi開發windows 應用程式的過程中,雖然delphi為每個視覺化元件都提供了很多屬性 property 和事件 event 但在實際應用中可能會碰到一些自己需要的特殊事件,這些特殊事件delphi 又沒有提供,這時我們就需要為應...
Delphi 7事件的多處理機制
delphi 7事件的多處理機制 allen tao 2007 08 19 首先解釋一下這個題目。在我使用delphi 7的過程中發現,乙個物件的事件只能被乙個過程處理。如果多次給這個物件的事件賦給處理事件的過程,最後真正處理事件的將是最後賦值的那個過程。例如,有類tmyclass中定義了乙個事件o...
Delphi 窗體的事件
delphi窗體的事件共有40個,常用的分為5大類 建立窗體時引發的事件 共有4個 oncreate事件 窗體建立時產生此事件,onshow事件 窗體顯示前產生此事件 onpaint事件 重畫窗體 窗體大小改變 窗體上的其他窗體移去時產生此事件 onactivate事件 窗體啟用時 窗體獲得焦點時 ...