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

3.14.6. Местоположение элементов (list view)

LVItemRect[ i, part ] - возвращает прямоугольник, занимаемый элементом (или его частью, указанной параметром part) в окне. Если элемент в данный момент в окне не виден, то возвращается прямоугольник со всеми координатами, равными нулю;

LVSubItemRect[ i, j ] - возвращает прямоугольник в окне, занятый конкретной колонкой элемента (для режимов lvsDetail и lvsDetailNoHeader). Если сам элемент в окне виден, но его колонка j не видна полностью, то будет возвращен прямоугольник с боковыми границами, выходящими за левый и/или правый край окна;

LVItemPos[ i ] - возвращает позицию элемента в окне (для режимов lvsIcon и lvsSmallIcon данное свойство позволяет так же изменить позицию);

LVItemAtPos( X, Y ) и LVItemAtPosEx( X, Y, where ) - возвращают индекс элемента, находящегося по данным координатам в окне (или -1, если в этой позиции нет элементов). В методе LVItemAtPosEx, в параметре where возвращается, какая именно часть элемента оказалась в точке (X,Y): пиктограмма, текст самого элемента, пиктограмма состояния, другая колонка;

LVTopItem - индекс элемента, отображаемого в первой строке списка (режимы lvsDetail, lvsDetailNoHeader, lvsList );

LVPerPage - количество элементов, вмещающихся в одну страницу (режимы lvsDetail, lvsDetailNoHeader);

LVMakeVisible( i, partialOK ) - обеспечивает такую прокрутку окна, чтобы элемент с индексом i оказался в области видимости. Если параметр partialOK имеет значение true, и указанный элемент уже частично виден в окне, данный вызов ничего не меняет;

3.14.7. Внешний вид (list view)

Set_LVItemHeight( i ) - позволяет задать высоту элементов (этот метод должен вызываться до создания окна для объекта, чтобы у системы была возможность вызвать событие OnMeasureItem);

SetLVItemHeight( i ) - аналогично предыдущему, но метод "сквозной";

LVItemHeight - свойство, которое позволяет не только установить высоту элемента (используя Set_LVItemHeight), но "вспомнить" потом, какая именно высота была установлена для элементов;

LVTextColor - задает цвет для шрифта текста (следует использовать вместо изменения Font.Color);

LVTextBkColor - задает цвет для заливки фона текста в элементах;

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

OnLVCustomDraw - вызывается для выполнения более детального пользовательского рисования элементов и/или подэлементов (а так же заголовка, и частей клиентской области, не содержащей элементов). Этот обработчик будет работать, только если в опциях отсутствует стиль lvsOwnerDrawFixed. При каждом рисовании окна данный обработчик вызывается многократно, для всего списка, для всего элемента, и (возможно) для каждого подэлемента каждого элемента, причем на каждой из стадии рисования: prepaint (подготовка к рисованию), preerase (подготовка к стиранию подложки), erase (стирание подложки), paint (рисование элемента), posterase (после стирания подложки), postpaint (после рисования элемента). На каждом из этих вызовов обработчик должен возвратить некоторые флажки, которые сообщают системе, в каких еще случаях вызывать данный обработчик в процессе продолжения рисования. С одной стороны, это самый гибкий и мощный инструмент для выполнения любого пользовательского управления процессом рисования в окне списка, с другой стороны - все так сложно, что разобраться сразу во всех перипетиях довольно трудно. В наборе демо-проектов имеется специальный проект (DemoLVCustomDraw) с демонстрацией кода этого обработчика. При написании своего обработчика, его можно взять за основу.