Hmm why not just assign OnClick with nil in your constructor and then have
if assigned(OnClick) then OnClick();
when you want to call the procedure?

Edit:
I would do it like this:
[pascal]
type
TGUIControl = class(TObject)
private
fOnClick: TProcedure;
public//or published if you like
...
property OnClick: TProcedure read fOnClick write fOnClick default nil;
end;
[/pascal]