小弟我在一个过程里动态生成了Form ,Button ,想添加button.Onclick事件改变From的状态,如何做

我在一个过程里动态生成了Form ,Button ,想添加button.Onclick事件改变From的状态,怎么做?
程序大概如下
procedure TForm.on***(sender: TObject);
var
  Form : TForm;
  Button : TButton;
  Edit: TEdit;
  .....
begin
  Form:=TForm.Create(self);
  Button:=TButton.Create(self);
  Button.Parent:=Form;
  Button.Caption:='dfs';
  ........
end;
现在我想为这个成的button添加一个OnClick事件来改变From或其它控件的状态.
我试过在外面写一个Procedure 如Procedure TForm.OnC(Sender:TObject) 然后再让 Button.Onclick:=Onc; 
这样做有一个问题, form及其它的控件都是局部变量. 在外面定义的过程(OnC) 无法访问到.

我知道可以把要生成的控件设为全局, 这么做是不是有点笨啊, 有没有其的办法.


------解决方案--------------------
笨吗?我只是问问。要么就吧OnC写在事件里面,然后用Form.ShowModal来显示窗体。