Текущий архив: 2002.08.29;
Скачать: CL | DM;
Вниз
need help, how to make listview work faster, blin.... Найти похожие ветки
← →
lensky (2002-08-17 17:22) [0]
procedure TForm1.Button1Click(Sender: TObject);
var
ListItem: TListItem;
input: TStringList;
k: integer;
begin
input:=TStringList.Create;
OpenDialog1.Execute;
input.LoadFromFile(OpenDialog1.FileName);
for k:=0 to input.Count - 1 do
begin
ListItem:=ListView1.Items.Add;
ListItem.Caption := input[k];
Application.ProcessMessages;
end;
end;
listview ViewStyle:=vsReport, SortType=stNone
v file primerno 8000 strochek simvolov po 15, a vremeni eto u nego znimaet minuty dve-tri, chto obsalutno ne priemlimo, moshno kaknit" dobovliat"v list view bistree?
← →
Просто прохожий (2002-08-17 17:41) [1]Можно попробовать перед началом добавления элементов в список вызвать метод ListView1.BeginUpdate, а после добавления всех элементов - ListView1.EndUpdate. Однако это вряд ли намного увеличит скорость. Здесь лучше использовать не ListView, а DrawGrid (только не StringGrid!) - немножко посложнее, но зато и намного быстрее.
← →
lensky (2002-08-17 18:08) [2]spasibo... vremia sokrotilos" do 40 secund... eto horosho no vsetaki ne dostatochno... drawgrid ia ne hochu ispol"zovat" potomushto iz nego tiashelo sdelat" listview:) a po zakazu nushen shtob vid bil v tochnosti listview, s checkboxami sorting arrows na nazvanie kolonok, voobshem nushen listview, hotia moshet ia i ne prav i iz drawgrid moshno sdelat" polnoe vizual"noe podobie listview vsReport
v lubom sluchae, est" li eshe kakienit" idei kak uskorit" proces?
← →
Просто прохожий (2002-08-17 20:11) [3]Я тут в предыдущий раз напутал маленько, нужно писать ListView.Items.BeginUpdate, а не ListView.BeginUpdate (то же и с EndUpdate). А ещё способ такой: перед добавлением элементов установить в свойство ListView.AllocBy число, приблизительно равное количеству элементов (напр., 8000).
← →
lensky (2002-08-17 21:07) [4]pro Items.BeginUpdate ia dogodalsia:)
AllocBy poprobuu
a tak ia dobilsia obrabotku spiska iz 8400 za 7 sekund na moem 450mhz 128mb... tak shto ogromnoe spasibo
pravda posle vihoda iz programy ona eshe secund 5 vigrushaetsia, v processah ee ne vidno no exe file ne sotresh":(
← →
Просто прохожий (2002-08-17 21:41) [5]> pravda posle vihoda iz programy ona eshe secund 5 vigrushaetsia
Можно попробовать ListView.Items.Clear перед закрытием. Хотя вряд ли поможет...
← →
Просто прохожий (2002-08-17 21:49) [6]Вот я ещё что подумал: перед загрузкой в Input : TStringList установить Input.Capacity = большое число. Тогда и здесь будет побыстрее. Только после загрузки в ListView нужно не забыть вызвать Input.Free (если этот список больше не нужен), а то память так никогда и не освободится.
Страницы: 1 вся ветка
Текущий архив: 2002.08.29;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.006 c