Как прикрепить дополнительную информацию к нодам 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
из путей.