Как отправить адрес процедуры в другую функцию в качестве параметра в Lazarus?

У меня есть форма, в которой я программно создаю кнопку в процедуре FormCreate:

procedure TForm1.FormCreate(Sender: TObject);
...    
   but := TButton.Create(Form1);
   ...
   but.OnClick := @OnMyButClick;

Где OnMyButClick объявлен в

TForm1 = class(TForm)
...
procedure OnMyButClick(Sender: TObject); 

Все отлично работает, но я хочу создать эту кнопку не в своем основном блоке, а в другом блоке и отправить туда все параметры. Все параметры отправляются нормально (например, слева, сверху...), но я не могу отправить адрес процедуры OnMyButClick моей новой процедуре CreateMyButton();

Q: Как в Lazarus передать адрес процедуры OnMyButClick другой функции в качестве параметра?


person user2154246    schedule 31.05.2013    source источник
comment
procedure SetNotifyEventHandler(AEventHandler: TNotifyEvent; AButton: TButton); и SetNotifyEventHandler(@OnMyButClick, MyBut);   -  person Abelisto    schedule 31.05.2013


Ответы (1)


procedure CreateMyButton( ... ; ClickEvent: TNotifyEvent);
begin
  ... ;
  Button.OnClick:=ClickEvent;
end;

назовите это так:

CreateMyButton( ... , @OnMyButClick);
person Thomas Munk    schedule 05.06.2013