Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  173

•  TDictionary Custom Sort  3 344

•  Fast Watermark Sources  3 095

•  3D Designer  4 853

•  Sik Screen Capture  3 351

•  Patch Maker  3 556

•  Айболит (remote control)  3 665

•  ListBox Drag & Drop  3 020

•  Доска для игры Реверси  81 749

•  Графические эффекты  3 948

•  Рисование по маске  3 253

•  Перетаскивание изображений  2 633

•  Canvas Drawing  2 761

•  Рисование Луны  2 586

•  Поворот изображения  2 196

•  Рисование стержней  2 172

•  Paint on Shape  1 570

•  Генератор кроссвордов  2 241

•  Головоломка Paletto  1 771

•  Теорема Монжа об окружностях  2 238

•  Пазл Numbrix  1 685

•  Заборы и коммивояжеры  2 059

•  Игра HIP  1 282

•  Игра Go (Го)  1 232

•  Симулятор лифта  1 477

•  Программа укладки плитки  1 219

•  Генератор лабиринта  1 549

•  Проверка числового ввода  1 369

•  HEX View  1 497

•  Физический маятник  1 359

 
скрыть


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

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



Delphi Sources

Урок 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-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте