delphi事件處理

2021-08-29 15:23:29 字數 792 閱讀 5058

最近做乙個元件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事件 窗體啟用時 窗體獲得焦點時 ...