![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обновление текста в 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 тебе поможет? )