Да, обработчик событий - это в основном ссылка на функцию. Если вы когда-либо использовали обратные вызовы, это в основном та же идея. Если нет, вот краткий обзор:
Тип события определяется следующим образом:
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 object
вы передаете обработчик событий, просто давая имя. Киньте Self.MyEventHandler
в соответствующее место в списке параметров, и оно будет работать.