Урок 16 - TKOLListView
Ведущий раздела KOL и MCK: Анатолий aka XVeL
Автор: Борис Моренко
WEB-сайт: http://kol.mastak.ru
Полную версию библиотеки KOL и MCK можно скачать здесь.
TKOLListView Как и следует из названия это аналог
TListView из VCL. Может быть 5-ти видов. За это отвечает свойство LVStyle
(на панели задач Style).
lvsIcon |
Список в виде больших иконок и надписей снизу. |
lvsSmallIcon |
Список в виде маленьких иконок и надписей снизу. |
lvsList |
Обычный списко. Если есть иконки то они слева. |
lvsDetai |
Таблица с заголовком сверху. |
lvsDetailNoHeader |
Таблица без заголовка. |
Для того что бы указать иконку надо бросить на форму TKOLImageList . Два раза кликнуть по нему и указать нужное изображение.
Затем надо указать этот ImageList у TKOLListView изменить свойства
ImageListNormal, ImageListSmall или ImageListSate.
Предположим что у нас есть гипотетический ListView (объект
класса TKOLListView) Для того что бы добавить пункт в список надо
обратится к LVItemAdd.
ListView.LVItemAdd('Значение')
Но если у вашего ListView установлен стиль lvsDetai то
через LVItemAdd вы сможете добавить текст только в первый столбец. Для
того что бы добавить данные в остальные столбцы обратитесь к
LVItems
ListView.LVItems[i, j] := 'значение';
i - строка j - столбец i и j нумеруется с нуля. Разумеется перед
тем как обращаться к этому j-му столбцу неплохо бы его создать. Для этого
надо обратится к свойсву Columns или просто щелкнуть по объекту два
раза. Появится диалог в котором все и настраивается.
Для того что бы узнать номер пункта выбранного пользователем надо
обратится к CurIndex. А зная его вы сможите узнать и текст который
написан в этом
пункте:
ListView.LVItems[ListView.CurIndex, 0];
(если у вас стиль lvsDetai то 0 должен меняться на соответствующий номер столбца)
У TKOLListView есть свойство Options через которое указываются
различные параметры для его настройки. Самые интересные (по моему мнению)
ниже в таблице.
lvoAutoArrange |
Автоматически располагает иконки по всей поверхности
ListView при изменение его размера (при Style
=lvsIcon). |
lvoEditLabel |
Можно редактировать надпись в списке |
lvoHideSel |
Не один пункт нельзя выделить |
lvoGridLines |
В режиме lvsDetai показываются разделительные линии
таблицы. |
lvoCheckBoxes |
Добавляет к каждому пункту флажок. |
lvoRowSelect |
В режиме lvsDetai выделяется вся строка в таблице (а не только
первая ячейка). |
lvoMultiselect |
Есть возможность выделять несколько пунктов |
Пару слов про lvoCheckBoxes. Благодяры ему вы сможете с легкостью
сделать из TKOLListView аналог VCL TCheckListBox. Для того чтобы проверить
установлен ли флажок на определенном пункте(или установить его) надо
обратится к LVItemStateImgIdx.
ListView.LVItemStateImgIdx[i] := j
j - может принимать два значения: 1 - нет галочки ; 2 - галочка
установлена. i - это номер пункта. Если i равно -1 тогда идет обращение
ко всем пунктам
Таким образом для того что бы снять все галочки надо написать следующую
строку:
ListView.LVItemStateImgIdx[-1] := 1
К сожелению если вам надо например проверить выделены ли все пункты в
списке то строка
if ListView.LVItemStateImgIdx[-1] = 1 then...
результата не даст. Тут надо переберать все пункты. Для того
чтобы узнать количество пунктов надо обратится к LVCount. Если у
вас стиль равен lvsDetai то количество столбцов узнается через
LVColCount.
Если у вас в опциях присутствует
lvoMultiselect вы сможете выделить несколько пунктов. Для того чтобы
узнать номера первого выделенного пункта нам надо обратится к
CurIndex. После чего обращаясь к LVNextSelected можно
перебрать все пункты. Если больше нет выделенных пунктов LVNextSelected
возвращает -1. Пример перебора:
var
i, j: Integer;
begin
i := ListView.LVCurItem;
if ListView.LVSelCount > 0 then
repeat
MsgOK('Выделеный пункт №' + Int2Str(i));
j := ListView.LVNextSelected(i);
i := j;
until j < 0;
...
LVSelCount - количество выделенных пунктов.
Краткая справка по свойствам TKOLListView
LVItemAdd |
Добавить запись |
LVItems |
Обратится к записи |
CurIndex |
Номер выделено записи |
LVItemStateImgIdx |
Проверка флажка |
LVCount |
Количество записей |
LVColCount |
Количество столбцов при стиле lvsDetai |
LVNextSelected |
Следующий выделенный пункт |
LVSelCount |
количество выделенных пунктов. |
|