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

Вниз

TListView медленно выводит данные!!!   Найти похожие ветки 

 
Schummi ©   (2002-10-04 08:34) [0]

Например, для вывода 100 строк в таблицу, в которой 7 столбцов, требуется на моем компе ~1.5 сек. А на компе послабее - ещё больше времени. А TStringGird например 700 записей(тоже 7 столбцов) за ~1.5 сек. Сразу говорю, TStringGird использовать не хочу. Почему? - Не спрашивайте! Помогите лучше с TListView разобраться! Заранее всем ответившим спасибо!


 
СлБ   (2002-10-04 08:44) [1]

Используй Items.BeginUpdate, Items.EndUpdate


 
Schummi ©   (2002-10-06 08:55) [2]

Да это не то. Он просто "скрывает" обновление, т.с. замораживает ListView до тех пор, пока ты не сделаешь "Items.EndUpdate". Ты читал, что я в вопросе написал???
> Например, для вывода 100 строк в таблицу, в которой 7 столбцов,
> требуется на моем компе ~1.5 сек. А на компе послабее -
> ещё больше времени. А TStringGird например 700 записей(тоже
> 7 столбцов) за ~1.5 сек. Сразу говорю, TStringGird использовать
> не хочу. Почему? - Не спрашивайте! Помогите лучше с TListView
> разобраться! Заранее всем ответившим спасибо!



 
ximka ©   (2002-10-06 11:15) [3]

Попробуй на время зпволнения, сделать visible...


 
Эльф ©   (2002-10-06 11:38) [4]

Есть такое свойство DoubleBuffered;
Попробуй :=true;


 
Alex4444444444   (2002-10-06 13:20) [5]

Begin/EndUpdate SIL"NO uvelichivaet skorost", no TListView v principe medlennuy. Ya uzh ne znayu, kakoj on u M$, no v Delphi interface sdelan tochno per annus.


 
lammoth   (2002-10-06 14:03) [6]

Тебе поможет свойство TListView.OwnerData и обработка
TListView.OnData и вообще использование т.н. "виртуального list view"
Я таким макаром показывал списки в десятки тысяч элементов. Естественно одновременно на экране было около сотни.


 
Vladislav ©   (2002-10-07 11:02) [7]

Я для себя определил верный способ и с listview и с treeview. Во время изменения делаю Visible := False, а потом в True.


 
monstrische   (2002-10-07 15:12) [8]

Так задумано, ListView сам по себе довольно тормозной. Например, код, приведенный ниже, на Celeron 333 работает примерно 3с. Основной способ борьбы с тормознутостью - это отключение перерисовки на время изменения листа (BeginUpdate, EnadUpdate). Без этого - 3,8с. Можно еще раскомментарить строчки ListView1.AllocBy := 100; и Subitems.Capacity := 6;, но это, если и помогает, то незначительно. А вот сбрасывать на время изменений свойство Visible - это, извините, плохо пахнет. Тем более, ни грамма не помогает. Пардон, если кого обидел.

procedure TForm1.Button2Click(Sender: TObject);
var
i,j: integer;
T: Cardinal;
begin
T := GetTickCount;

ListView1.Items.BeginUpdate;
// ListView1.AllocBy := 1000;

for i := 1 to 100 do begin
with ListView1.Items.Add do begin
Caption := "Item caption";
// Subitems.Capacity := 10;
for j := 0 to 5 do
Subitems.Add("Subitem "+IntToStr(j));
end;
end;

ListView1.Items.EndUpdate;
Caption := IntToStr(GetTickCount - T);
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.019 c
4-56416
Витёк
2002-09-04 23:00
2002.10.17
Проблемы с System Area (Shell_NotifyIcon)


1-56073
Shluz
2002-10-08 15:54
2002.10.17
Динамичное получение данных


3-55939
delfist
2002-09-24 14:09
2002.10.17
А можно ли сразу получить сумму по колонке цифр в таблице?


1-56225
Новенький в Делфи
2002-10-08 01:59
2002.10.17
Вопрос по работе с 16-ичными файлами


1-56024
andrei dm.
2002-10-07 13:58
2002.10.17
как приостановить процесы с большим приорететом