Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга о KOL.doc
Скачиваний:
29
Добавлен:
30.04.2019
Размер:
1.77 Mб
Скачать

3.14.1. Списки изображений (list view)

Дополнительные свойства общих контролов, которые могут быть так же, как общему списку (list view), присущи дереву (tree view), линейке инструментов (tool bar), панелям закладок (tab control), это:

ImageListSmall - позволяет задать для общего списка объект «список пиктограмм» (для режимов просмотра lvsDetail, lvsDetailNoHeader, lvsList и lvsIconSmall). В том числе, это свойство позволяет изменить этот объект динамически во время исполнения.

ImageListNormal - для общего списка задает список пиктограмм для режима lvsIcon;

ImageListState - список изображений для состояний элементов. Пиктограмма из этого списка отображается в отдельной колонке (место для колонки резервируется при наличии назначенного непустого ImageListState);

Далее рассмотрим некоторые специальные свойства общего списка.

3.14.2. Управление колонками (list view в режимах отображения lvsDetail, lvsDetailNoHeader)

LVColCount - количество колонок;

LVColAdd( s, textalign, i ) - добавляет колонку, задавая для нее выравнивание текста (влево, вправо, по центру) и ширину. Для автоматического управления шириной следует передать в качестве ширины отрицательное число;

LVColAddW( s, textalign, i ) - аналогично предыдущему методу, но работа идет с Unicode-строкой;

LVColInsert( i, s, textalign, i1 ) и LVColInsertW( i, s, textalign, i1 ) - вставляет колонку в позицию i в списке колонок;

LVColDelete( i ) - удаляет колонку с индексом i;

LVColWidth[ i ] - свойство ширины колонки;

LVColText[ i ] и LVColTextW[ i ] - заголовок колонки;

LVColAlign[ i ] - выравнивание текста в колонке;

LVColImage[ i ] - изображение (пиктограмма) для заголовка колонки. Если назначено число (большее или равное нуля), то используется пиктограмма с таким индексом из ImageListSmall;

LVColOrder[ i ] - порядок колонок не обязательно должен совпадать с визуальным порядком их отображения в общем списке. Данное свойство задает для колонки ее визуальный порядок;

OnColumnClick - событие, которое срабатывает при клике мыши на заголовке колонки (режим просмотра lvsDetail);

Для анализа того, какая именно клавиша мыши была нажата в событии OnColumnClick на заголовке общего списка, можно использовать свойство:

RightClick - возвращает true, если была нажата правая клавиша мыши.

3.14.3. Работа с элементами и выделением (list view)

LVCurItem – следует использовать для определения индекса "текущего" элемента. Я взял в кавычки слово "текущий", так как с этим понятием в отношении общего списка могут обнаружиться разные толкования. Дело в том, что для обеспечения возможности работать с общим списком не только с помощью мыши (но и клавиатуры), для него различаются понятия "выделенные элементы" и "элемент в фокусе". Так же, как это сделано в VCL, я решил под словом "текущий" подразумевать "первый выделенный" элемент в списке. Наверное, потому, что когда пользователь запрашивает какие-либо действия, которые должны быть выполнены в отношении отдельных элементов списка, то чаще всего в виду имеются именно "выделенные" элементы. Элемент же в фокусе служит, прежде всего, для того, чтобы иметь возможность перемещаться между элементами списка с помощью стрелочек на клавиатуре, и выделять нужные элементы, нажимая соответствующие клавиши. (Впрочем, для его получения и работы с ним имеется особое свойство, см. LVFocusItem ниже).

Если выделение не содержит элементов, LVCurItem возвращает число -1. Это же значение следует присвоить этому свойству, чтобы снять выделение и привести список в состояние, при котором в списке нет выделенных элементов. Присваивание неотрицательного значения для списка с множественным выделением элементов добавляет элемент с таким индексом в набор выделенных элементов, для списков же, в которых допускается иметь только один выделенный элемент, выделенным оказывается один этот элемент, а с прочих выделение тогда снимается;

LVFocusItem - индекс элемента в фокусе клавиатуры;

LVNextItem( i, attrs ) - возвращает индекс следующего за i элемента, обладающего нужными атрибутами (могут задавать направление поиска, а так же сочетание атрибутов LVNI_CUT - отмечен для вырезания, LVNI_DROPHILIGHTED - подсвечен для "бросания" на него объектов, перетаскиваемых мышью, LVNI_FOCUSED - находится в фокусе ввода, LVNI_SELECTED - выделенный;

LVNextSelected( i ) - находит следующий выделенный (после индекса i, где i может быть задано равным -1, чтобы начать поиск с начала списка);

LVSelectAll - метод для выделения всех элементов в списке;

LVSelCount - возвращает количество выделенных элементов в списке (то же делает и общее свойство SelLength);

OnLVStateChange - событие, которое срабатывает, когда изменяется состояние элементов (элемент выделен, в фокусе, и т.д.). Обработчик события вызывается для каждого элемента, у которого изменяется состояние, либо при одновременном изменении состояния у нескольких элементов - однократно для всей группы элементов. Для того, например, чтобы выполнить какие-то действия только при выделении некоторого элемента, в обработчике следует проверить условие:

if (OldState and lvisSelect = 0) and (NewState and lvisSelect <> 0) then ...