-
MY PROJECTS
-
Recent Posts
- SpringBoot.Making our first starter and autoconfiguration
- Spring. Creating main annotation to start business logic
- Spring.Reading from properties file
- Spring.How to define spring version inside springBoot ?
- SpringBoot App inside Docker
- Kafka.FirstExperience
- Docker.MySql and Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0
- Gradle.Tips
- Spring.AppConfig
- Leetcode.Best-time-to-buy-and-sell-stock
- LeetCode.ClimbStairs.Fibbonacci
- Leetcode.Roman-to-integer
- LeetCode.Palindrome-number
- Java.DesignPatterns.Lightweight
- Java.DesignPatterns.Proxy
- Java.DesignPatterns.Facade
- Java.DesignPatterns.Composite
- Java.DesignPatterns.Bridge
- Java. Strange OOP thing
- Java.Classpath
Categories
- Aptana
- Azure
- C#
- DataSnap
- DBExpress
- Delphi
- Delphi и сети
- Delphi. Язык программирования
- ExtJS
- FastReport
- FireDAC
- FireMonkey
- GIT
- ICS
- IDE
- IIS
- Indy
- InnoSetup
- javascript
- jQuery
- JSON
- LiveBindings
- MSHTML
- MySQL
- PHP
- REST
- Ribbons
- SMS
- SQL инструкции
- SVN
- TRichView
- UniGui
- WebBroker
- WinAPI
- Windows
- Алгоритмы
- Без рубрики
- Деревья
- Ищу ответ
- Компонентостроение
- Мои компоненты
- Начальный уровень
- Обработка исключений
- Парсинг
- Потоки(Threads)
- Регулярные выражения
- Тестирование приложений
Daily Archives: 04.08.2016
Delphi. Как настроить TListView для работы с большим количеством данных?
1 2 3 4 |
... private FSL:TStringList; ... |
Например 1000 000 строк…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
procedure TForm1.FormCreate(Sender: TObject); var lc:TListColumn; i: Integer; begin FSL:=TStringList.Create; for i := 0 to 1000000 do FSL.Add('somevalue '+i.ToString()); //Вначале настроем массив //Вся настройка листвью тут //Виртуальный режим Listview1.OwnerData:=True; //Сделаем в виде колонок и добавим 2 колонки ListView1.ViewStyle:=vsReport; lc:=ListView1.Columns.Add; lc.Caption:='caption'; lc.Width:=150; lc:=ListView1.Columns.Add; lc.Caption:='test'; lc.Width:=150; //Ну и ещё пару моментов ListView1.RowSelect:=true; //Листвю должен знать, скоко у нас элементов. //Это число потом можно будет менять в процесе работы. ListView1.Items.Count:=FSL.Count-1; //Length(arr); //Листвью сам запросит нужные элементы, когда надо будет их отрисовать //Элементы запрашиваются в OnData Caption:=IntToStr(FSL.Count-1); //ListView1.UpdateItems(1,1); end; |
OnData
1 2 3 4 5 6 7 8 9 |
procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem); begin //Этот обработчик должен выдавать элемент по номеру. //Точнее, есть Item, в которому нужно заполнить caption и subitems //Номер элемента храниться в Item.index item.Caption:=FSL[Item.Index]; // arr[item.Index].caption; item.SubItems.Add((FSL[item.Index])); end; |
После этого – информация подгружается по мере скролла – происходит это достаточно быстро.
Posted in Delphi
Comments Off on Delphi. Как настроить TListView для работы с большим количеством данных?