Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обновление текста в ListView [D7, 95/98, XP]


SKIPtr ©   (2007-09-22 18:40:00) 

У меня была написана программа где определённый список переодически обновлялся Список заносился в ListBox Чтоб список не убегал в начало при обновлении я использовал TopIndex Решил облехчить просмотр заменив ListBox на ListView но при этом не могу найти аналога свойству TopIndex


SKIPtr   (2007-09-26 07:37:00) [1]

ListBox уже сделал в самом начале код примерно так

k :=  ListBox1.TopIndex;
....
ListBox1.TopIndex := k

работает нормально но читать не удобно и я решил переделать в виде таблицы


Dmitro   (2007-09-25 23:45:00) [2]

Дааа....
Используй TListBox. Перд его обновлением запоминаем ItemIndex в переменную "K" и TopIndex в переменную "Kt".
Сразу после обновления такой код:
if ListBox1.Items.count > K then
 ListBox1.ItemIndex:=K
                                    else
 try
   ListBox1.ItemIndex:= Kt
 except
 end;
Или такой:
Если известна строка, на которой стоял курсор (выделенная строка), то перед обновлением списка запоминаем:
S:= ListBox1.Items[ListBox1.ItemIndex];
А после обновления:
ListBox1.ItemIndex:= ListBox1.IndexOf(S);
Тоже работает.
Примечание: КОД НЕ УНИВЕРСАЛЬНЫЙ - РАБОТАТЬ БУДЕТ, НО НАДО ДОРАБОТАТЬ...:---)))


SKIPtr   (2007-09-25 17:15:00) [3]

То что я хотел получилось на StringGrid но возникла поблема как применить BeginUpdate а то на экране такие действия развиваються


SKIPtr   (2007-09-24 17:08:00) [4]

да в одной книге Math в другой Match


Lacmus   (2007-09-23 22:39:00) [5]

Возможно CommCtrl, Math


SKIPtr   (2007-09-23 22:34:00) [6]


> Lacmus ©   (23.09.07 10:25) [9]


Попробовал переодически возникает ошибка Undeclared identifier Нашел для Min нужно включить Match Какие ещё модули надо включить


Lacmus   (2007-09-23 10:25:00) [7]



procedure ListView_SetTopIndex(aWindow: HWND; aIndex: Integer);
var
 Jump: Integer;
begin
 Jump := Min(aIndex + ListView_GetCountPerPage(aWindow), ListView_GetItemCount(aWindow) - 1);
 ListView_EnsureVisible(aWindow, Jump, False);
 ListView_EnsureVisible(aWindow, aIndex, False);
end;


SKIPtr   (2007-09-23 09:11:00) [8]

Попробовал TopItem.Index запоминает то что бвло сверху MakeVisible ставит эту строку вниз Текст не остаётся на прежнем месте он перемещается вверх а нужно чтоб оставался на месте

Ещё я попробовал а потом полазил через поисковик и не смог понять чем отличаеться MakeVisible(False) от MakeVisible(True)


{RASkov}   (2007-09-23 00:13:00) [9]

> [6] SKIPtr   (22.09.07 21:48)
> Подскажите как получить i

TopItem.Index ?


SKIPtr   (2007-09-22 21:48:00) [10]


> Юрий Зотов ©   (22.09.07 20:13) [3]


Подскажите как получить i до начало обновления списка


Kolan   (2007-09-22 21:11:00) [11]

Еще есть TreeView, тоже можно списочег вывести на экран…


SKIPtr   (2007-09-22 21:11:00) [12]

С TopItem не получается после команды ListView.TopItem := k; пишет Cannot assign to a read-only property
Мне  нужно надписи сделать столбиком Попробую это сделать через StringGrid если не получиться тогда API


Юрий Зотов   (2007-09-22 20:13:00) [13]

ListView.Items[i].MakeVisible(False)


{RASkov}   (2007-09-22 19:47:00) [14]

Попробуй еще так:
...
NScPos:=GetScrollPos(ListView.Handle, SB_VERT);
...
SetScrollPos(ListView.Handle, SB_VERT, NScPos, True);

"капризный" он какой-то ЛистВью.... Так что подумай на счет облехчить:)


{RASkov}   (2007-09-22 18:53:00) [15]

> Решил облехчить просмотр

а получилось как всегда :)
Может теперь TopItem тебе поможет? )


Наверх

Титульная страница Поиск, карта сайта Написать письмо