hell_admin |
Отправлено: 17.11.2004, 23:47 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 8
|
Здрасте все, проблема такая нужен список изображений JPEG и BMP с индексами так что бы можно было из этого списка взять изображение под номером n...
Посоветуйте какой-нибудь класс.
Что то типа TImageList только что-бы и JPEG изображения в нем хранились.. т.е. Список объектов TGraphic...
Никто раньше такую хрень не делал?
Заранее спасибо.. |
|
olegenty |
Отправлено: 18.11.2004, 07:08 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
вот контейнер, заточенный под хранение указателей на что-либо.
CODE |
///////////////////////////////////////////////////////////////////////////////
//
// Шаблонный класс-список объектов-указателей
//
template <class C, bool bFreeItems> class CPtrList: public TList
{
private:
inline C* __fastcall GetItem(int Index) {return reinterpret_cast<C*>(TList::Items[Index]);}
inline void __fastcall SetItem(int Index, C* Value) {TList::Items[Index] = Value;}
public:
__fastcall CPtrList(): TList() {;}
__fastcall ~CPtrList()
{
if (bFreeItems)
{
for (int i = 0; i < Count; i++)
{
if (Items[i])
{
delete reinterpret_cast<C*>(Items[i]);
}
}
}
};
inline void __fastcall Add(C* pItem) {TList::Add(pItem);}
inline void __fastcall Delete(int iIndex) {TList::Delete(iIndex);}
inline C* __fastcall Last() {return reinterpret_cast<C*>(TList::Last());}
__property C* Items[int Index] = {read = GetItem, write = SetItem};
};
|
Использовать так:
CODE |
class CBitmapList: public CPtrList<Graphics::TBitmap, true[false]>
{
};
|
Второй параметр говорит, валить ли экземпляры хранящегося класса при разрушении списка.
|
|
hell_admin |
Отправлено: 18.11.2004, 13:52 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 8
|
Спасибо! |
|