Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.21;
Скачать: CL | DM;

Вниз

Обновление текста в ListView   Найти похожие ветки 

 
SKIPtr   (2007-09-22 18:40) [0]

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


 
{RASkov} ©   (2007-09-22 18:53) [1]

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

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


 
{RASkov} ©   (2007-09-22 19:47) [2]

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

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


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

ListView.Items[i].MakeVisible(False)


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

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


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

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


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


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


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


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

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

TopItem.Index ?


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

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

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


 
Lacmus ©   (2007-09-23 10:25) [9]



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 22:34) [10]


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


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


 
Lacmus ©   (2007-09-23 22:39) [11]

Возможно CommCtrl, Math


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

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


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

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


 
Dmitro ©   (2007-09-25 23:45) [14]

Дааа....
Используй 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-26 07:37) [15]

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

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

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



Страницы: 1 вся ветка

Текущий архив: 2007.10.21;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.03 c
2-1190812703
Malik
2007-09-26 17:18
2007.10.21
Application


3-1181803060
Dust
2007-06-14 10:37
2007.10.21
fast report в dll


15-1190111223
Галинка
2007-09-18 14:27
2007.10.21
Массивы переменной длины в Си


2-1190971347
Gigik
2007-09-28 13:22
2007.10.21
Двоичные файлы


6-1171358206
SergGG
2007-02-13 12:16
2007.10.21
MailSlot поймать реального клиента