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

3.14.4. Добавление и удаление элементов (list view)

LVAdd( s, ii, state, sii, oii, data ) - "универсальное" добавление элемента (рекомендуется использовать LVItemAdd, см. ниже);

LVInsert( i, s, ii, state, sii, oii, data ) - аналогично LVAdd, вставляет элемент в позицию с индексом i (так же рекомендую использовать появившейся позже метод LVItemInsert);

LVItemAdd( s ) и LVItemAddW( s ) - добавляет элемент, задавая для него только текст (прочие свойства элемента вполне могут задаваться предназначенными для этого свойствами);

LVItemInsert( i, s ) и LVItemInsertW( i, s ) - вставляет элемент в указанную позицию;

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

OnDeleteLVItem (синоним OnLVDelete) - данное событие срабатывает для каждого удаляемого элемента (может использоваться для освобождения ресурсов, ассоциированных с элементом через свойство LVItemData, например);

OnDeleteAllLVItems - вызывается перед удалением сразу всех элементов списка. Если после возврата из обработчика этого события, назначенным остается обработчик события OnDeleteLVItem, то он так же будет вызываться для каждого удаляемого элемента;

3.14.5. Значения элементов и их изменение (list view)

LVSetItem( i, j, s, ii, state, sii, oii, data ) - позволяет назначить для элемента или любого его подэлемента (колонки) указанные атрибуты (текст, пиктограмму, состояние, и т.д.) - за один вызов. Если индекс подэлемента (колонки) равен 0, то имеется в виду сам элемент, а с индекса 1 начинают нумероваться колонки (и для них параметр data игнорируется);

LVItemState[ i ] - "состояние" элемента (сочетание флажков lvisBlend - частичное подкрашивание пиктограммы, lvisHighlight - яркое выделение элемента, lvisFocus - фокусная рамка вокруг элемента, lvisSelect - элемент выделен). Если при присваивании в качестве индекса использовать -1 для списка с множественным выделением, то состояние изменится для всех элементов (для списка, в котором не допускается множественное выделение, индекс -1 относится к последнему элементу в списке);

LVItemIndent[ i ] - отступ от левого края (для режимов просмотра lvsDetail и lvsDetailNoHeader). Единица соответствует отступу с шириной, равной ширине пиктограммы в списке изображений ImageListSmall;

LVItemImageIndex[ i ] - индекс пиктограммы для основного изображения в элементе (берется из списка изображений ImageListNormal для режима просмотра lvsIcon, и во всех остальных режимах - из списка ImageListSmall);

LVItemStateImgIdx[ i ] - индекс изображения в поле для пиктограммы "состояния" (не следует путать с состоянием самого элемента). Колонка с пиктограммой состояния отображается в режимах просмотра lvsList, lvsDetail, lvsDetailNoHeader. Для пиктограмм состояний используется специально для этого предназначенный список изображений ImageListState;

LVItemOverlayImgIdx[ i ] - индекс надрисовки для изображения основной пиктограммы элемента. Данное свойство может принимать значения от 0 до 15, причем значение 0 соответствует отсутствию надрисовок, а для значений от 1 до 15 используются соответствующие "надрисовки" (Overlay) из списка изображений ImageListSmall;

LVItemData[ i ] - ассоциирует с элементом некоторое число (или указатель);

LVItems[ i, j ] и LVItemsW[ i, j ] - свойства для доступа к тексту элементов и подэлементов (колонок). Колонка j с индексом 0 - это сам элемент, индексы прочих колонок начинаются с единицы;

LVEditItemLabel( i ) - инициирует редактирование текста указанного элемента. Редактировать в list view-контроле его же средствами разрешается только сам элемент (колонка 0), но не подэлементы. Конечно же, в опциях контрола должна присутствовать lvoEditLabel, чтобы данный вызов мог работать (при этом пользователь обычно имеет возможность начать редактирование текста любого элемента стандартными средствами Windows: по нажатию клавиши F2, или кликнув выделенный элемент мышью);

OnEndEditLVItem - это событие срабатывает, когда завершено редактирование текста элемента пользователем, по любой причине (редактирование отменено или завершено), и независимо от того, каким образом было начато редактирование - пользователем или программно, методом LVEditItemLabel. Обработчик получает новый текст в качестве параметра, и имеет возможность подставить вместо него любой другой (в том числе вернуть прежнее значение);

OnLVData и OnLVDataW - особое событие для виртуального списка (с опцией lvoOwnerData). Обработчик этого события вызывается каждый раз, когда при рисовании окна списка системе требуется получить текст и изображения для отображения (виртуальные списки тем и отличаются от обычных, что текст и изображения программа хранит у себя, и в результате появляется возможность быстро работать с огромными списками данных);