C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Динамическое создание нескольких однотипных объектов и управление ими  (Прочитано 16109 раз)
oxotnik
Глобальный модератор


Сказали спасибо: +100/-15
Offline

Сообщений: 2425


Динамическое создание нескольких однотипных объектов и управление ими
« : 04 Май 2008, 16:35:55 »

Код
// заголовочный файл:
#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();
}
 
« Последнее редактирование: 19 Июнь 2009, 09:19:25 от oxotnik » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.044 секунд. Запросов: 23.