Вобщем была проблема похожая, но уже и сам разобрался. Обработчик для каждой кнопки можешь создавать отдельный, или же если у них код одинаковый то лучше один. Я в делфи не работал , так что извеняй, даю код для си, кто сможет, то опишите все это только для делфи:
Назначение обработчика NewButton->OnClick = ButtonClick; где в заголовочном файле обьявлено в класе формы(где и остальные обработчики) void __fastcall NewButtonClick(TObject *Sender); а в исполняемом модуле описано код обработчика
void __fastcall TGameForm::HeroeClick(TObject *Sender)
{ AnsiString Name = (TComponent(Sender))->Name; // узнать имя кнопки. Смысл в том, что просто узнать из сендера имя
/*нужный код*/ //нельзя. Нужно сначала преобразовать его в тип компонентов
// преобразование - это (тип)<переменная>, и конечно чтобы оно воспринималось как указатель, то берем все еще раз в //скобы
/* В конце имени не обизательно писать ее номер i. Если у тебя есть такое свойство, которое не используеться в языке, //например в си это Tag, то можно заносить туда индекс кнопки
}
Вот и все вроде что могу посоветовать. :D