Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];

Вниз

Приложение очень долго закрывается   Найти похожие ветки 

 
allrussia ©   (2006-12-18 23:01) [0]

есть форма, на ней Listview
если в него добавить хотя бы в 1 колонку несколько тысяч строк
а потом закрыть форму то закрытие происходит очень медленно 10-20-50 секунд в зависимости от кол-ва айтемов
Есть возможность ускорить этот процесс, кроме TerminateProcess?
Я просто не знаю, может как то выделить память перед добавлением элементов?
Спасибо.


 
trubin ©   (2006-12-18 23:05) [1]

Возможно поможет использование ListView в режиме виртуального списка:
OwnerData:= True;


 
allrussia ©   (2006-12-18 23:37) [2]

trubin

Возможно поможет использование ListView в режиме виртуального списка:
OwnerData:= True;

Потестил, время засекал - те же пироги...
Хотя может чего не так делаю?
В Form.OnClose поместил код LV.OwnerData:= True


 
Eraser ©   (2006-12-18 23:41) [3]

> [2] allrussia ©   (18.12.06 23:37)

какой код выполняется при закрытии приложения?


 
trubin ©   (2006-12-18 23:54) [4]


> В Form.OnClose поместил код LV.OwnerData:= True


Это совсем не то, разбирайся:

Delphi + F1

Yandex + "ListView виртуальный список"


 
allrussia ©   (2006-12-19 00:05) [5]

Eraser

Application.terminate


 
MetalFan ©   (2006-12-19 00:18) [6]

> [5]
TerminateProcess )))))
шутка.
подумай над [4].
или используй TVirtualDrawTree/TVirtualStringTree - очень удобные/быстрые компоненты


 
Сергей М. ©   (2006-12-19 10:18) [7]


> В Form.OnClose


пробуй:

LV.BeginUpdate;
try
 Items.Clear;
finally
 LV.EndUpdate;
end;


 
Desdechado ©   (2006-12-19 10:55) [8]

А зачем нужны списки "хотя бы в 1 колонку несколько тысяч строк"?
Я так понимаю, что хочется больше и уже не в одну колонку?
Может, лучше о Grid подумать? Или о БД?


 
allrussia ©   (2006-12-19 20:37) [9]

Сергей М.

меня так и стояло, точнее LV.Items.BeginUpdate... и т.д.
пробовал так как вы сказали, те же грабли

Desdechado

А зачем нужны списки "хотя бы в 1 колонку несколько тысяч строк"?
Я так понимаю, что хочется больше и уже не в одну колонку?
Может, лучше о Grid подумать? Или о БД?


Я как раз думаю над этим... Вот благодаря наводкам выше (TVirtualTreeView) нашел бесплатный компонент NextGrid, на котором пока остановился. По крайней мере, он быстрее LV, и выгрузка моментальная.
А по поводу списков согласен с одной стороны они не нужны. Но когда скроллингом мотаешь на какой-нибудь n-цатый элемент, в DB-Aware компонентах жуткие тормоза, поэтому приходится подгружать все строки сразу в 1 колонку + с мультиселектом у многих явные проблемы. Зачем мотать? Есть поиск! А зачем тогда отрисовывать элементы? Если есть поиск...

По крайней мере я пока не нашел DB-компонента который удовлетворял бы именно в юзабельности. Несомненно, по функционалу они крутые (например TMS grids, BERG NextDBGrid). Но вот в использовании часто возникает ряд неприятных проблем/глюков. Потому что разработчики уже не обращают внимание на такие мелочи, они именно работают на функционал.

В общем, это примерно тоже самое когда есть 2 крутые программы, первая супер по функционалу, но нет горячих клавиш, а во второй меньше возможностей, но есть программируемые горячие клавиши. И несмотря на супервозможности первой программы, ты работаешь со второй, так как в десятки раз быстрее. Время-деньги.


 
trubin ©   (2006-12-19 20:57) [10]

А чем тебя не устроил режим виртуального списка?

где-то, можно в desing-time:

ListView1.OwnerData:= True;

и затем в обработчике ListView1.OnData выводишь заголовок для каждого элемента, для примера:

procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
begin
 Item.Caption:= "Элемент № " + IntToStr(item.Index);
end;


На 10000 строк все практически мгновенно.


 
allrussia ©   (2006-12-20 02:03) [11]

trubin

Спасибо, по скорости неплохо, выгрузка моментальная



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.015 c
15-1166515691
vidiv
2006-12-19 11:08
2007.01.07
реклама в бесплатном хостинге


2-1166530373
vitv
2006-12-19 15:12
2007.01.07
Поиск текста в документах


15-1166128677
Real
2006-12-14 23:37
2007.01.07
Аналоговые часы на десктопе


1-1163593462
DarkFlow
2006-11-15 15:24
2007.01.07
Playlist как у Winamp


15-1166435526
Сатир
2006-12-18 12:52
2007.01.07
Problem “J” - Concurrency Simulator





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский