Callback – это возможность использовать процедуры и функции в качестве параметра.
Пример ниже, по нажатию кнопки, будет выводить сначала первое сообщение – прямым, обычным способом, а потом второе – через callback функцию или что, тоже самое – процедурный тип.
ШАГ1 – Объявляем процедурный тип в разделе interface
1 2 |
type TMyCallBack = procedure(s:string);// <<здесь может быть и функция... |
Создаем процедуру / функцию с такими же параметрами
1 2 3 4 |
procedure CallbackProc(s:string); begin showmessage(s); end; |
Создаем метод, в котором мы собственно будем использовать CallBack
1 2 3 4 5 6 |
procedure MyProc (s:string; CallBackVar:TMyCallBack ); begin Showmessage(s); CallBackVar := CallbackProc;//<<ОБЯЗАТЕЛЬНО присвоить тип CallBackVar('SecondMessageInMyPoc');// Используем её по назначению end; |
ШАГ последний – вешаем обработчик на кнопку
1 2 3 4 5 6 |
procedure TForm.ButtonClick(Sender: TObject); var LocalMyCallBack: TMyCallBack; begin MyProc('FirstMessaage',LocalMyCallBack); end; |