Виртуальный режим нужен для отображения большого числа данных. В принципе, на мой взгляд, чтобы перестраховаться, можно использовать его в большинстве случаев. Далее пример того как добавить данные в TListView в виртуальном режиме.
На примере загрузки файлов сервера. Получится примерно так…
В секции private public объявляем список, из которого будем загружать значения в TListView
1 2 3 4 5 6 7 |
private FFilesOnServer:TStringList; // Список файлов и папок на сервере public //Файлы на сервере property FilesOnServer:TStringList read FFilesOnServer write FFilesOnServer; //___ |
В OnCreate формы или компонента настраиваем TListView
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 37 |
OnCreate // компонента или формы var lc: TListColumn; ... //Виртуальный режим Listview.OwnerData:=True; //-----Сделаем в виде колонок ListView.ViewStyle:=vsReport; ListView.GridLines:=true; lc:=ListView.Columns.Add; lc.Caption:='Имя файла'; lc.Width:=150; lc:=ListView.Columns.Add; lc.Caption:='Автор'; lc.Width:=150; lc:=ListView.Columns.Add; lc.Caption:='Дата и время'; lc.Width:=150; lc:=ListView.Columns.Add; lc.Caption:='Размер'; lc.Width:=150; lc:=ListView.Columns.Add; lc.Caption:='Ссылка'; lc.Width:=300; ListView.Items.Count:=FilesOnServer.Count; //--------------- |
Для ListView прописываем процедуру OnData. При включенном виртуальном режиме данные будут браться именно отсюда
1 2 3 4 5 6 |
procedure TVisualFrame_PSFTPClient.ListViewData(Sender: TObject; Item: TListItem); begin item.Caption:=FilesOnServer[Item.Index]; //item.SubItems.Add((FSL[item.Index])); end; |
Далее детали и нюансы…
В процедуре InitialUpdate Заполняем наш список и заполняем TListView
1 2 3 4 5 6 |
procedure TVisualFrame_PSFTPClient.InitialUpdate; begin FillFilesOnServer; // В зависимости от задачи заполняем список ListView.Items.Count:=FilesOnServer.Count; ListView.UpdateItems(0,FilesOnServer.Count-1); end; |