Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
6-95934
cypher
2002-06-03 22:01
2002.08.29
Подключенные диски


1-95817
Cr@sh
2002-08-19 07:55
2002.08.29
Выручите с построением линии.


4-96036
Proton
2002-06-23 19:40
2002.08.29
пункт меню help был прижат к правому краю


1-95749
Sniffer
2002-08-19 00:02
2002.08.29
Чтение из текстового файла


3-95695
sdram
2002-08-08 16:29
2002.08.29
Как добавить запись с пустыми полями?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский