Главная страница
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.013 c
14-56340
Nikolas ShmuS
2002-09-25 23:52
2002.10.17
КиШ


1-56023
cypher
2002-10-07 23:49
2002.10.17
Подскажите


1-56083
Элина
2002-10-08 16:00
2002.10.17
Раскрытие ComboBox


6-56265
Vahmurka
2002-08-16 11:24
2002.10.17
Как соединить два компа по LPT порту?


7-56369
MAYOR
2002-08-09 16:57
2002.10.17
Помогите разобраться с TCommPortDriver