![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ListView неправильно позицинирует первую строку [D7, Win2k, WinXP]
GreyWolf © (2009-10-22 17:05:00)Имеется ListView в режиме OwnerData, но не OwnerDraw. Когда я удаляю все строки (устанавливаю ListView.Items.Count = 0) и после этого вновь что-то добавляю, то _иногда_ первая строка появляется не в самом верху, как она должна быть, а с отступом например в 3-20 позиций сверху. В остальном ListView функционирует нормально. После того, как ListView вошел в это состояние, эти пустые строки сверху остаются при повторном удалении всех строк и добавлении новых. Items.Count показывает ожидаемое значение. В чем может быть причина такого поведения?
GreyWolf (2009-10-23 02:15:00) [1]Проблема исчезла после того, как перестал вызывать ClearSelection метод в случае, если удалены все пункты.
Сергей М. (2009-10-22 20:15:00) [2]Покажи как у тебя организован список, откуда обработчик OnData берет данные ..
GreyWolf (2009-10-22 19:30:00) [3]Добавление и удаление - имел ввиду установку Items.Count с последующей отрисовкой нового состояния.
Есть обработчик OnData, он отрабатывает как ожидается. То же с OnCustomDrawItem. Эти обработчики не изменяют параметры Canvas (DC) у ListView, которые могли бы сместить строки.
> Значит либо список не готов к изменению Count
А что значит список не готов?
Сергей М. (2009-10-22 17:25:00) [4]
> после этого вновь что-то добавляю
> и добавлении новых
Какое может быть добавление и удаление в режиме OwnerData ?
В этом режиме изменяя св-во Count на любое значение > 0 ты должен быть готов к соответствующему и правильному состоянию виртуального списка, к которому ты будешь обращаться в обработчиках OnData, OnDataXXXX.
Значит либо список не готов к изменению Count либо неверно обрабатываешь вышеупомянутые события