| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Ассоциативный контейнер для изображений |
| Автор: iLya84a 14.8.2008, 15:20 |
| Прежде чем бросаться за написание такого класса решил узнать может уже такой существует. Вот какая функциональность мне требуется: 1) класс - потомок TCustomImageList (чтобы использовать его стандартным образом) 2) метод для добавления изображений в список: function Add(Image, Mask: TBitmap): Integer; 3) метод для удаления изображения из списка procedure Delete(Index: Integer); 4) доступ к элементам контейнера осуществляется по ImageIndex'у, который сохраняет постоянное значение с момента помещения элемента в список до момента удаления. Мне нужно чтобы при удалении элемента индексы последующих в списке элементов не менялись. (как это происходит в обычном ImageList'е) Вот что я хочу на примере: список: 0; 1; 2; 3 ;4 удалили элемент с индексом 2 получили: 0; 1; 3 ;4 А нужно мне это чтобы использовать такой ImageList вместе с компонентом TVirtualStringTree, а именно: хочу в структуре данных, связанной с каждым узлом хранить ImageIndex. При удалении узла (а значит и элемента из ImageList'а) оставшиеся элементы списка изображений должны сохранять свои индексы. В таком случае данные в узлах будут сохранять свою актуальность при добавлении/удалении элементов ImageList'а (Сейчас я вынужден в каждом узле хранить указатель на TBitmap и заниматься отрисовкой дерева в соответствующих обработчиках.) |
| Автор: Alexeis 14.8.2008, 15:26 |
| Ну, можно доработать напильником TStringList. У него есть функция добавления пары объект + строка. Метод AddObject. StringList можно отсортировать, а потом при помощи IndexOf найти нужный объект. IndexOf ищет быстро, при помощи бинарного поиска. |