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!