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:
L'implementazione può contenere la visualizzazione di un messaggio. Ad esempio, possiamo visualizzare il nome del pulsante sul quale è stato fatto il clic:codice:TForm1 = class(TForm) private { Private declarations } procedure MioClick(Sender: TObject); public { Public declarations } 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.codice:procedure TForm1.MioClick(Sender: TObject); begin ShowMessage(TButton(Sender).Caption); end;
Per collegare l'evento ai pulsanti generati a runtime, ti basterà seguire la scrittura che hai riportato nel tuo messaggio:
e il gioco è fatto.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;
Ciao!![]()

Rispondi quotando