Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Связать данные с 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...


Наверх

Титульная страница Поиск, карта сайта Написать письмо