Un evento non è altro che una proprietà particolare la quale può assumere l'indirizzo di un metodo da eseguire; a seconda del tipo di evento, il prototipo del metodo può essere differente.

Per "prototipo", intendo il numero e il tipo di parametri.

Nel tuo caso, ad esempio, l'evento OnClick normalmente accetta un metodo che abbia un unico parametro, Sender, di tipo TObject.

L'unica cosa che devi fare è aggiungere un metodo compatibile alla tua form e implementarlo. Un esempio:
codice:
  TForm1 = class(TForm)
  private
    { Private declarations }
    procedure MioClick(Sender: TObject);
  public
    { Public declarations }
  end;
L'implementazione può contenere la visualizzazione di un messaggio. Ad esempio, possiamo visualizzare il nome del pulsante sul quale è stato fatto il clic:
codice:
procedure TForm1.MioClick(Sender: TObject);
begin
  ShowMessage(TButton(Sender).Caption);
end;
Il parametro Sender rappresenta sempre l'oggetto che ha generato l'evento; in questo caso, va esplicitato che vogliamo trattare tale oggetto generico come un pulsante (ovviamente, deve essere un pulsante a generare l'evento, altrimenti otteniamo risultati impredicibili) e visualizzarne la proprietà Caption.

Per collegare l'evento ai pulsanti generati a runtime, ti basterà seguire la scrittura che hai riportato nel tuo messaggio:
codice:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); 
var
  button2: tbutton; 
begin
  button2:= Tbutton.create(self); 
  button2.parent:= self; 
  button2.left:=x; 
  button2.Top:=Y; 
  button2.OnClick:= MioClic;
end;
e il gioco è fatto.

Ciao!