![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Связать данные с TtreeView'ом? [D2005, 2003]
MaryM © (2008-06-02 14:18:00)Задача следующая: парсится с помощью simplexml xml-файл, строится дерево treeView и нужно теперь как-то связать узлы дерева treenode с узлами xml-документа. Вычитала, что вроде бы в свойство Data можно ставить что угодно, но мне ругается на несовпадение типов данных - как этим свойством пользоваться и возможно ли это? Или нужно расширять компонент, добавлять к свойствам ttreenode еще одно, в которое можно будет вписать нужный тип? Тут возникает сложность - как вписывать свойства в обычные компонент - понятно, в treeview добавить свойство можно, а в treenode как?
Короче, помогите, люди добрые...
MaryM (2008-06-03 09:30:00) [1]Всем спасибо, особенно Сергею М., разобралась
Reindeer Moss Eater (2008-06-02 15:31:00) [2]а не лучше ли хранить ключевые атрибуты вместо ссылок на ноды?
а то ведь открыл перед загрузкой в дерево и так и держи открытым чтобы ссылки не протухли.
Palladin (2008-06-02 15:22:00) [3]думаю спасет искусственное увеличение... ээ.. количества ссылок :)
XMLNode._AddRef
и потом на OnDelete, столь'же искусственное, его уменьшение )
Сергей М. (2008-06-02 15:12:00) [4]
> Это можно как-то перевести в поинтер?
Можно.
TTreeNode.Data := Pointer(XMLNode);
Но тебя может поджидать засада.
> Нужно создать новый компонент на основе TTreeView?
Не обязательно.
MaryM (2008-06-02 15:09:00) [5]Вот на
TTreeNode.Data := XMLNode
и ругается, что IXMLNode - это не Pointer.
Это можно как-то перевести в поинтер?
Другой вариант (имхо, более правдоподобный) как добавить в TTreeNode свойство (например, XML), в которое можно будет записывать IXMLNode? Т. е. общий механизм - куда что нужно дописать, чтобы добавить к TTreeNode свойство? Нужно создать новый компонент на основе TTreeView? А там как вписывать что-то в TTreeNode?
Ega23 (2008-06-02 14:41:00) [6]
> В кустах может поджидать засада, если XMLNode - локальный
> идентификатор
Может, не спорю.
Сергей М. (2008-06-02 14:29:00) [7]
> Ega23 © (02.06.08 14:22) [2]
В кустах может поджидать засада, если XMLNode - локальный идентификатор
Ega23 (2008-06-02 14:22:00) [8]Записать
TTreeNode.Data := IXLMNode
Прочитать
XMLNode := IXMLNode(TTreeNode.Data)
Вроде так.
Сергей М. (2008-06-02 14:22:00) [9]
> мне ругается на несовпадение типов данных
Показывай код ..
Palladin (2008-06-02 14:20:00) [10]
> Вычитала, что вроде бы в свойство Data можно ставить что
> угодно
свойству Data можно присваивать все, что угодно, но только если оно типа Pointer...