скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Урок 16 - TKOLListView



Ведущий раздела KOL и MCK: Анатолий aka XVeL
Автор: Борис Моренко
WEB-сайт: http://kolmck.net/

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 количество выделенных пунктов.





Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook