Finally got finishing up with my test run. It seems to work rather well actually. So big thank you to JSoftware! (And of course everyone else)

I had to use a wee bit of voodoo to get it to store the procedure addresses for later use though. No biggie however as it was easy as pi...

[pascal]type
TGUIControl = class(TObject)
...
hasOnClick: Boolean;
OnClick: TProcedure;
procedure GetOnClick(proc: TProcedure);
end;

procedure TGUIControl.GetOnClick(proc: TProcedure);
begin
hasOnClick := True;
OnClick := proc;
end;[/pascal]

So thats how I did it.