avb |
Отправлено: 06.10.2005, 14:09 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 10
|
Как, зная TopItem, восстановить вид TListView после обновления списка!
ListView1->TopItem = .... — недоступен! |
|
Doga |
Отправлено: 06.10.2005, 15:08 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
С пмощью
ListView1->Items->Item[n] == ListView1->TopItem
,
ListView1->Items->Item[n]->Position
и
ListView1->Scroll(...)
|
|
avb |
Отправлено: 06.10.2005, 15:33 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 10
|
to Doga
Первый способ не понял, что там дальше?
Второй способ не проходит, т.к. у меня vsReport, а для него Position '... has no effect'. |
|
Doga |
Отправлено: 06.10.2005, 17:35 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
Никогда бы не подумал бы что символы "," и "и" могут быть инерпретированы как понятие "или".
Мой пост описывает только один способ.
Короче.
Перед обновлением ListView1 запомните сам TopItem (например в OldTopItem).
После обновления проверте существование сохраненного OldTopItem в списке.
Если он есть, то можно пользоваться методом Scroll(int DX, int DY),где
DX = OldTopItem->Position.x — ListView1->TopItem->Position.x ( можно смело ставить 0, т.к. в режиме vsReport этот фокус не проходит)
DY = OldTopItem->Position.y — ListView1->TopItem->Position.y
А ежели нет его, то восстанавливать нечего...
Таперь панятна?
P.S.
Position has no effect только на изменение этого свойства, а читать его можно...
Отредактировано Doga — 06/10/2005, 17:38
|
|
avb |
Отправлено: 07.10.2005, 09:54 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 10
|
To Doqa
И все-таки Position не работает — куда бы я не ставил ползунок, а перед очисткой и обновлением LV->TopItem->Position = (x:2, y: 2) !!!
А получилось так :
LV->Scroll(0, (old_top_index — 1) *(LV->Heigth / LV->VisibleRowCount)); |
|
Doga |
Отправлено: 07.10.2005, 15:02 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
QUOTE |
LV->TopItem->Position = (x:2, y: 2)
|
Эти координаты TopItem будет иметь всегда, на то он и TopItem.
Position изменяется у OldTopItem, который теперь совсем не TopItem.
Я специально проверил у себя — всё работает.
|
|