Цитата:
Сообщение от HTTqp
Меня интересует именно виртуальный listview, я не понимаю как его заполнять(
|
В том то и смысл, что виртуальный listview никак не заполняется - он отображает не свои, а чужие данные.
Вот набросал пример отображения данных в виртуальном ListView найденными файлами:
Код:
var
FileList: TStringList = nil; // Здесь будут наши данные для виртуального ListView
procedure TForm1.Button1Click(Sender: TObject);
var
sr: TSearchRec;
begin
// Если объекта с нашими данными ещё нет - создаём его, иначе очищаем его от старых данных:
if not Assigned(FileList) then FileList := TStringList.Create else FileList.Clear;
// Выполняем поиск и добавление имён файлов в FileList:
if FindFirst('C:\Windows\System32\*.*', faAnyFile, sr) = NO_ERROR then
try
repeat
if (sr.Attr and faDirectory) = 0 then // Если очередной найденный элемент это файл
begin
FileList.Add(sr.Name); // Добавляем его в наш внутренний список
end;
until FindNext(sr) <> NO_ERROR;
finally
FindClose(sr);
end;
// Теперь просто указываем виртуальному ListView сколько ему нужно будет отображать элементов:
ListView1.Items.Count := FileList.Count;
ListView1.Invalidate; // И на всякий случай обновляем его
end;
// Этот метод будет автоматически вызываться для каждого элемента, который
// нужно отобразить в виртуальном ListView
// Естественно свойство OwnerData у ListView должно быть True - что указывает
// на "виртуальность" ListView.
procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
begin
if Assigned(FileList) and (Item.Index < FileList.Count) then
begin
Item.Caption := FileList[Item.Index];
end;
end;