Урок 16 - TKOLListView
Ведущий раздела KOL и MCK: Анатолий aka XVeL
Автор: Борис Моренко
WEB-сайт: http://kol.mastak.ru
Полную версию библиотеки KOL и MCK можно скачать здесь.
TKOLListView
Как и следует из названия это аналог
TListView из VCL. Может быть 5-ти видов. За это отвечает свойство LVStyle
(на панели задач Style).
Для того что бы указать иконку надо бросить на форму 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 | количество выделенных пунктов. |