Форум: "Основная";
Текущий архив: 2002.10.17;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c