![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Listview eto problema delphi ili windows? [D5, Win95/98, WinXP]
lensky © (2002-11-08 07:26:00)to chto on tak medlianno rabotet, eto izza delphi ili windowsa?
medlianno rabotaet eto dobavliaet 50 tisiach zapisei bol"she 3 minut na 2Ghz proche...
voobshem esli eto problema delphi moshno li cherez winapi kaknit" uskorit" rabotu?
lensky (2002-11-14 01:30:00) [1]hmm na ownerdraw i ondata posmotru, virtual listview v demke rabotal kakto sovsem medlianno tak shto ia na nego ne obratil vnimania...
50k zapisei eto situachia konechno ekstremal"naai no ne osobo, a nashet pol"zovatel"skovo interfaca to vse ok, i situachii kak u murzikN vozn"iknut"
TTCustomDelphiMaster (2002-11-13 18:14:00) [2]murzikN (13.11.02 17:38)
Я как пользователь работал со списком в 672 записи. Никому не пожалаю такого. Представте нужно заполнить 80 - 90 полей. Для каждого в модальном окне открыть этот список, пролистать до нужного элемента (они отсортированы по номерам, но нужно искать текст, который я помню приблизительно) и нажать кнопку Ok. И таким образом нужно заполнить около 30 конфигураций. Так вот к вечеру после такой работы голова вообще не соображает. Это при создании конфигураций для 4 устройств. А максимальное количество записей в этом списке может быть 73728 для 256-ти устройств :-)
Кот Бегемот (2002-11-13 18:05:00) [3]Блинн боюсь я повторяюсь - но вы господин Ленский > извращенец :(
Работа с ListView прекрасно описана в демках Virtual Listview
Особенно много внимания оказывалось работе с большими обемами данных. 50К записей и добавлять то не нужно на самом деле :)
Для этого есть ListView.OnData()
murzikN (2002-11-13 17:38:00) [4]> TTCustomDelphiMaster © (13.11.02 17:17)
Выбирать будет, например, по алфавиту из отсортированного списка.
Почему никто не может представить список из нескольких десятков тысяч записей? Воображения не хватает?
TTCustomDelphiMaster (2002-11-13 17:17:00) [5]Дак вы поставте OwnerDraw в True и присваивайте название элемента перед его прорисовкой. Правда он все равно будет тормозить при быстром прокручивании и освобождении элементов.
PS: Интересно а как ползователь сможет выбрать нужный элемент из 50000? Или вы проверяете работу приложения в экстремальных условиях?
lensky (2002-11-13 00:45:00) [6]prichem skorost" padaet, postoianno naprimer 50k za 1:45 eto 1k za 2.1 secundy, a 100k ushe poluchaetsia za 7:09 eto ushe 1k za 4.29 sec
voobshem ochen" hotelos" by uvidet" kakoenit" reshenie...
lensky (2002-11-13 00:07:00) [7]da pravda no problema v tom shto esli my budem izmeniat" ih captiony to vipolniasia on budet gorazdo dol"she
u menia etot kod rabotaet 1:45 shto opiat"she bezumno dolgo
var
i: integer;
stime: tdatetime;
begin
stime:=now;
ListView1.Items.BeginUpdate;
for i := 0 to 50000 do
begin
(ListView1.Items.Add as tlistitem).caption:="a";
end;
ListView1.Items.EndUpdate;
showmessage(timetostr(now-stime));
end;
TTCustomDelphiMaster (2002-11-08 10:58:00) [8]А у меня такой код выполняется 3 сек.
var
i: integer;
begin
ListView1.Items.BeginUpdate;
for i := 1 to 50000 do
ListView1.Items.Add;
ListView1.Items.EndUpdate;
end;
VaS (2002-11-08 08:44:00) [9]
ListView1.Items.BeginUpdate;
try
//добавляем, удаляем
finally
ListView1.Items.EndUpdate;
end;