С: \Prcgram Files\Borland\Delphi7\bin\brcc32 bitmap, гс
3. Появившийся файл bitmap.res нужно включить в состав проекта. Для этого используется директива $R:
{$R bitmap.res}
4. Теперь картинка содержится в ресурсах и будет включена в состав исполняемого файла. Осталось загрузить ее в компонент TimageList. Для
ЭГСГО ИСПОЛЬЗ^еТСЯ МгГОД ResourceLoad:
ImageListl.ResourceLoad(rtBitmap, 'bitmaps',TColor(0)); При этом произойдет автоматическая "нарезка" картинок в соответствии со свойствами width и Height. Если размер большой картинки, к примеру, 256x16 пикселов, а ширина, заданная свойством TimageList, равна 16 пикселам, то в список будут включены 16 элементов размером 16x16. Поэтому еще во время разработки нужно правильно настроить размеры в компоненте TimageList, иначе после загрузки ресурса картинки будут разрезаны как попало.
Есть и другой метод загрузки - FileLoad:
function FileLoad(ResType: TResType;
Name: string;
MaskColor: TColor): Boolean;
Аналогичным путем он позволяет загружать картинки из любого пригодного файла. Но загрузка из файла менее надежна - нет гарантии, что у пользователя вашего приложения нужный файл всегда находится на месте и он не изменен.
Описанный выше редактор списка картинок "умеет" делать их прозрачными еще во время разработки. Часто бывает необходимо сделать прозрачными картинки, загружаемые из файлов во время исполнения. Для этого нужно
ИСПОЛЬЗОвагь ИХ СЮЙСГВО Transparent: Var bmp: TBitmap;
bmp.LoadFromFile('c:\test.bmp');
bmp.Transparent := True;
ImageListl.AddMasked(bmp, bmp.TransparentColor);
В методе AddMasked нужно вторым параметром указать "прозрачный" (фоновый) цвет, который В данном случае равен bmp.TransparentColor.
Как элемент управления Win32, компоннет TimageList имеет собственный дескриптор:
property Handle: HlmageList;
Не следует путать этот дескриптор с дескрипторами растровых картинок, входящих в состав списка. В файле CommCtrl.pas приведены прототипы всех функций для работы с этим элементом управления, и для их вызова необходимо значение свойства Handle. Обратитесь к ним, если опубликованных свойств TimageList вам недостаточно.
Ком пон енты TTreeViewviTListView
Эти компоненты известны каждому, кто хоть раз видел Windows 98 или Windows 2000. Именно на их базе создано ядро пользовательского интерфейса - оболочка Explorer, да и большинство других утилит Windows. Они включены в библиотеку ComCtl32.dll и доступны программистам.
Компонент TTreeView называют деревом (рис. 5.3).
Компонент TTreeView - правопреемник компонента TOutline, разработанного Borland еще для Delphi 1 и предназначен для отображения иерархической информации. Его "сердцем" является свойство
property Items: TTreeNodes;
Рис. 5.3. Внешний вид компонента TTreeView
Данное свойство - это список всех вершин дерева, причем список, обладающий дополнительными полезными свойствами. Каждый из элементов списка - это объект типа ТТгееТЧоёе. Свойства его сведены в табл. 5.3.
Таблица 5.3. Список свойств объекта ТТгееЫобе
Объявление |
Описание |
|
Равно True, если узел имеет дочерние узлы |
|
Счетчик числа дочерних узлов данного узла |
|
Список дочерних узлов |
|
Ссылка на объект - родительский узел (верхнего уровня) |
|
Уровень, на котором находится узел. Для корневого узла это свойство равно 0; его потомки имеют значение Leve 1 = 1 и т. д. |
|
Текстузла |
|
Данные,связанные с узлом |
|
Ссылка на компонент TTreeView, в котором отображается данный узел |
|
Дескриптор окна компонента TTreeView, в котором отображается данный узел |
|
Ссылка на компонент TTreeNodes, которому принадлежит данный узел |
Таблица 5.3 (окончание) |
|
Объявление |
Описание |
|
Индекс узла в списке своего родителя |
|
Равно True, если узел видим (все его родительские узлы развернуты) |
|
Дескриптор узла (применяется при вызове некоторых методов) |
|
Абсолютный индекс узла в списке корневого узла |
|
Индекс картинки, соответствующей невы-бранному узлу в нормальном состоянии |
|
Индекс картинки, соответствующей выбранному узлу |
|
Индекс картинки, которая может накладываться поверх основной |
|
Индекс дополнительной картинки, отражающей состояние узла |
|
Равно True, если данный узел выбран пользователем |
|
Равно True, если данный узел выбран пользователем для редактирования текста узла |
|
Равно True, если данный узел развернут (показываются его дочерние узлы) |
Очень важным является свойство Data. Вместе с каждым узлом можно хранить не только текст, но и любые данные. Необходимо только помнить, что при удалении узла они автоматически не освобождаются, и это придется сделать вручную.