Something like this will work. You need to use a "holder"-control for the eventmethods you want to assign.
procedure TForm5.btnCreateControlClick(Sender: TObject);
var
btn: TButton;
begin
btn := TButton.Create(self);
btn.Caption := 'Click';
btn.Left := 10;
btn.Top := 10;
btn.Parent := self;
if IsPublishedProp(btn, 'OnClick') then
SetMethodProp(btn, 'OnClick', GetMethodProp(fProcHolder, 'OnClick'));
end;
procedure TForm5.DoOnClick(Sender: TObject);
begin
ShowMessage('Hello');
end;
procedure TForm5.FormCreate(Sender: TObject);
begin
fProcHolder := TEdit.Create(self);
fProcHolder.OnClick := DoOnClick;
end;