// заголовочный файл:
#include
using namespace std;
class TForm1 : public TForm
{
...
...
private: // User declarations
map int, TImage*> ImMap; // индексированный контейнер для хранения указателей
void __fastcall ImageDblClick (TObject *Sender); // самописная ф-я - событие для динамических компонентов
public:
...
};
// в *.cpp модуле формы:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TImage *img;
for (int i = 0; i 10; i ++) // создаем 10 одинаковых объектов типа TImage
{
img = new TImage (this);
img->Parent = this;
img->Width = 100;
img->Height = 100;
img->Top = 100*i+10;
img->Canvas->Rectangle(0,0, 100, 100);
img->OnDblClick = ImageDblClick; // присваиваем самописный обработчик события
ImMap[i] = img;
}
}
// --------------------------------------------------------------------------------------------
// свой обработчик события
void __fastcall TForm1::ImageDblClick(TObject *Sender)
{
TImage *img = dynamic_castTImage*>(Sender); // приводим TObject *Sender к типу TImage
if (!img) return;
// делаем с img что угодно
}
// --------------------------------------------------------------------------------------------
// удаление динамических компонентов
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
for (unsigned int j = 0; jImMap.size(); j++)
delete ImMap[j];
ImMap.clear();
}