ОБСУЖДЕНИЕ

Передаче в параметрах процедуры другой процедуры

4 ответов 5,2 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Возможно из темы ничего не понятно тогда извините иначе сформулировать не смог.
Ситуация следующая :
есть две процедуры вида
procedure test(m:string; i: Integer);
procedure Button1Click(Sender: TObject);
....

Procedure TForm1.test(m:string; i: Integer);
begin
....
end;

Procedure TForm1.Button1Click(Sender: TObject);
begin
DBMemo1.Text:=DBMemo1.Text+((Sender as TMenuItem).Caption);
end;

возможно ли передать процедуру Button1Click(Sender: TObject); в качестве
параметра процедуре test(m:string; i: Integer); с сохранением её работо способности.
Если да то плиз напишите как. :D
 
Код:
...
type
TObjectProc = procedure(sender: TObject) of object;
...

procedure test(proc: TObjectProc; m: integer; s: string);

Для вызова просто пишешь внутри test
Код:
proc(self);
ну или что там хочешь передать вместо self
 
А для чего так делать? метод обработки нажатия на кнопке является Published, т.е. он виден для других методов данного класса.
 
Ну иногда передача функции полезна .. например часто используется в плагинной архитектуре...
 
Barmutik - Сенкс
DIR3ct0r - Лично мне ето нужно для написания универсального обработчика событий динамически создаваемого меню