簡體   English   中英

Delphi中的事件如何運作?

[英]How do events in Delphi work?

我正在嘗試使用此庫uZpRunConsoleApp從程序中獲取控制台輸出。 它有很好的文檔,但我沒有長時間使用Delphi,我不明白事件是如何工作的。

從我可以告訴我需要用我的應用程序調用ExecuteConsoleApp,我沒有輸出。 看起來這個方法要我指定一個事件發生時可以觸發的函數,但我不明白該怎么做。

我希望有人能在這里傳播一些亮點。

我沒有發布任何代碼,因為這不是一個特定於代碼的問題,但如果有人想要我到目前為止我會為他們編輯。

是的,事件處理程序基本上是對函數的引用。 如果你曾經使用過回調,它的想法基本相同。 如果沒有,這里是一個快速概述:

事件類型定義如下:

TZpOnNewTextEvent = procedure(const Sender: TObject;
  const aText: string) of object;

這意味着它是一個對象方法( of object )的引用,其簽名如下所示:

type
  TMyObject = class (TMyObjectAncestor)
    //stuff here
    procedure MyEventHandler(const Sender: TObject; const aText: string);
    //more stuff here
  end;

of object位很重要。 這是一個方法參考,而不是對獨立函數的引用。

事件處理程序的用途是允許您自定義ExecuteConsoleApp的工作方式。 這幾乎就像在表單設計器中向按鈕添加代碼一樣。 將按鈕放在窗體上,然后為其OnClick事件分配一個事件處理程序,通過添加單擊按鈕時執行的代碼來自定義按鈕。 不同之處在於,您沒有表單設計器為您連接它們。

幸運的是,語法非常簡單。 對於procedure (whatever) of objectprocedure (whatever) of object只需給出名稱即可傳遞事件處理程序。 Self.MyEventHandler放在參數列表中的適當位置,它將起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM