关于delphi TVirtualString遍历数据

如下图是TVirtualString的列数据,如何像listview这样使用遍历
for i := 0 to self.ListView1.Items.Count - 1 do
begin
str:= ListView1.Items[i].Item[i].SubItems.Strings[2] ;
end;
从而得到列的数据?

 function theforeverCSDN(vst: TVirtualStringTree): TVNodeArray;
 var
   list: TList;
   n: PVirtualNode;
   i: Integer;
 begin
   list := TList.Create;
   n := vst.GetFirst;
   while n <> nil do
   begin
       list.Add(n);
       n := vst.Getnext;
   end;
   SetLength(Result, list.Count);
   for i := 0 to list.Count-1 do
   begin
       Result[i] := list[i];
   end;
   list.Free;
 end;