Форум: "Начинающим";
Текущий архив: 2008.12.28;
Скачать: [xml.tar.bz2];
Внизкак быстро загрузить в Listview до 500 000 записей? Найти похожие ветки
← →
Ruzzz © (2008-11-16 15:53) [0]Привет! Сам вопрос звучить немного глупо, но вот проблема, как проги для работы с БД это делают? Я так понимаю что стандартные средства типа TListview не могут этого делать?
Может кто-то подсказать статьи или хоть намекнуть на приемы какие?
Может подгружать самому всю свою инфу, а потом как то переделывать TListview.Items.Add или точнее смотреть как он это делает и просто переделать метод?
Может использовать буфер, в один момент загружать лишь часть инфы в TListview? Корректировать вертикальный скролл и следить за ним, при перемешении подгружать нужную инфу? Все это кажется каким-то не правильным :(
← →
Palladin © (2008-11-16 15:57) [1]TListView.OwnerData + F1
← →
Ruzzz © (2008-11-16 15:59) [2]ага, точно, извиняюсь, и спасибо!!! :)
← →
Ruzzz © (2008-11-16 18:09) [3]мож кому нада будет:
1) Открываем файл данных, подсчитываем кол-во записей, заодно формируем список Records (offset, size) для каждой записи, у меня это очень быстро получается
2) далее устанавливаем ListView.Items.Count
3) ранее вставляем код в ListView.OnData - тут передается один параметр Item: TListItem, смотрите на Item.Index и быстренько читаете из файла запись с нужной позиции используя ранее созданный список Records, используя Item.Caption и Item.SubItems.Add(n) выводите нужную инфу
4) есть еще ListView.OnDataHint -передает StartIndex, EndIndex: Integer - чтобы вы могли заранее подгрузить записи в требуемом диапазоне
Вообщем все оказалось просто :)
← →
Ruzzz © (2008-11-16 18:11) [4]да забыл, если у вас файл уже содержит инфу о кол-ве и т.д., т.е. есть какой-либо заголовок, то первый пункт вообще быстр, не нужно проходит по всему файлу
← →
Правильный$Вася (2008-11-16 19:39) [5]
> как быстро загрузить в Listview до 500 000 записей? [D7]
> как проги для работы с БД это делают?
вообще-то такие программы используют специальные db-контролы, которые не содержат данных, я являются только дыркой для показа содержимого датасетов
а это заметно быстрее и функциональнее
← →
Юрий Зотов © (2008-11-16 20:42) [6]Полмиллиона записей в визуальный контрол? Какой же в этом смысл? Ведь юзер все равно практически не сможет с ним работать.
← →
CodeMaster © (2008-11-16 21:10) [7]Ну если только присобачить туда систему поиска. И то нужна она будет если у тебя это будет Архив
← →
Юрий Зотов © (2008-11-16 22:03) [8]> CodeMaster © (16.11.08 21:10) [7]
Даже если присобачить систему поиска, то зачем грузить данные в визуальный контрол? Система поиска прекрасно может работать и с невидимыми данными, а отображать уже найденное. Поэтому смысла в полной загрузке всех данных в визуальный контрол все равно нет.
← →
CodeMaster © (2008-11-16 23:00) [9]
> Юрий Зотов © (16.11.08 22:03) [8]
Да ты прав конечно, это ненужное забитие памяти, но а если пользователь не знает что находится в архиве?
← →
tesseract © (2008-11-16 23:12) [10]
> но а если пользователь не знает что находится в архиве?
Пусть не знает дальше. Подгрузку можно по построенному дереву организовать. и SQL в принципе, в таком случае рулит.
← →
KilkennyCat © (2008-11-16 23:43) [11]
> но а если пользователь не знает что находится в архиве?
а если знает, то это - инопланетянин. полмиллиона записией помнить...
← →
MsGuns © (2008-11-17 11:16) [12]Использовать боксы для ХРАНЕНИЯ и ПОИСКА большого кол-ва табличных данных - явно неудачное решение. Существует множество куда более удобных средств для этого. Например, наборы данных (наследники TDataSet), которые умеют делать много того, чего боксы не умеют (например, поиски, сортировки, фильтрации и т.д.)
Если данные берутся каждый раз с разных мест, т.е. нет фикстрованного и стабильного источника, то подойдет датасет в памяти (в библиотеке
← →
MsGuns © (2008-11-17 11:20) [13]Блин, нажал не ту кнопке в этой долбанной опере.
.. RxLib), если же источник один, то я бы использовал TClientDataSet в локальном, файловом режиме, а такжке для отображения TDataSource+TDBGrid - все это замечательно летает на сотнях тысячах записей
← →
Ega23 © (2008-11-17 11:48) [14]
> апример, наборы данных (наследники TDataSet), которые умеют
> делать много того, чего боксы не умеют (например, поиски,
> сортировки, фильтрации и т.д.)
Зачем на клиенте в конкретный момент времени данных больше, чем помещается в видимой области визуального контрола?
Можешь объяснить?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.12.28;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c