Как прикрепить дополнительную информацию к нодам TreeView с возможностью её последующего изменения?
Может быть через Tag.
Вообще я когда-то использовал этот контрол, он удобнее и там больше возможностей.
ObjectListView — ObjectListView 2.9.1 documentation
Примеры ObjectListView (WinForms): список сотрудников, дерево файловой системы
F1 =>
Data property (TTreeNode)
Points to application-defined data associated with the tree node.
Delphi syntax:
property Data: Pointer;
Description
Use the Data property to associate data with a tree node. Data allows applications to quickly access information about the entity represented by the node.
Так это Дельфи, а не винформс )
В винформс в Tag можно объекты класть.
Пардон 


Не заметил 
и в делфине можно pointer засунуть в integer. как появится 64-битный делфи (если уже не появился) и если tag сделают nativeint то и там можно будет )
Tag он же int, а не object 
В делфе уже давно можно компилить 64-битные EXE’шники
procedure TForm1.Button2Click(Sender: TObject);
var k: Integer;
l: TLabel;
begin
k:=Integer(Label1); //Label1 тип TLabel на форме
l:=Tlabel(k);
l.Caption:='надо же';
end;
Значит я с чем-то перепутал
Кстати, мне не ListView нужен, а TreeView 
Там оба есть. 
но у меня в компонентах появились только FastObjectListView, ObjectListView, VirtualObjectListView. A TreeView где?
почему в названии нету object, если он object?
хз 
Видимо как-то так исторически сложилось у автора )
нифига не понял
The final step is to give both trees a list of root objects:
treeListView1.Roots = ModelWithChildren.CreateModels(null, new ArrayList { 0, 1, 2, 3, 4, 5 });
treeListView2.Roots = ModelWithChildren.CreateModels(null, new ArrayList { “A”, "B ", “C”, “D”, “E” });
ModelWithChildren.CreateModels is a silly method that simply generates a list of ModelWithChildren objects that we can use in our trees.
где брать этот CreateModels? И вообще не понял, как там устроено дерево нодов. Вместо нодов там коллекции, чтоли? 
Это наверно просто для примера.
В моем примере я просто положил в Roots список объектов и в ChildrenGetter возвращал потомков.
ваш исходник я тоже листал
// drive letters (C:\, D:\, etc.) in roots
tvFilesystem.Roots = DriveInfo.GetDrives()
.Where(d => d.IsReady)
.Select(d => new FileSystemItem(d.Name));
напомните, что возвращает where. Коллекцию какого типа?
всмысле, я не пойму, какого типа коллекцию надо класть в roots
Тут в итоге IEnumerable<FleSystemItem>. Можно просто List и т.п. вместо него.
Where тут чтобы убрать недоступные диски, Select создает FleSystemItem из путей.
