Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.29;
Скачать: CL | DM;

Вниз

Связать данные с TtreeView ом?   Найти похожие ветки 

 
MaryM ©   (2008-06-02 14:18) [0]

Задача следующая: парсится с помощью simplexml xml-файл, строится дерево treeView и нужно теперь как-то связать узлы дерева treenode с узлами xml-документа. Вычитала, что вроде бы в свойство Data можно ставить что угодно, но мне ругается на несовпадение типов данных - как этим свойством пользоваться и возможно ли это? Или нужно расширять компонент, добавлять к свойствам ttreenode еще одно, в которое можно будет вписать нужный тип? Тут возникает сложность - как вписывать свойства в обычные компонент - понятно, в treeview добавить свойство можно, а в treenode как?
Короче, помогите, люди добрые...


 
Palladin ©   (2008-06-02 14:20) [1]


> Вычитала, что вроде бы в свойство Data можно ставить что
> угодно

свойству Data можно присваивать все, что угодно, но только если оно типа Pointer...


 
Ega23 ©   (2008-06-02 14:22) [2]

Записать
TTreeNode.Data := IXLMNode

Прочитать

XMLNode := IXMLNode(TTreeNode.Data)

Вроде так.


 
Сергей М. ©   (2008-06-02 14:22) [3]


> мне ругается на несовпадение типов данных


Показывай код ..


 
Сергей М. ©   (2008-06-02 14:29) [4]


> Ega23 ©   (02.06.08 14:22) [2]


В кустах может поджидать засада, если XMLNode - локальный идентификатор


 
Ega23 ©   (2008-06-02 14:41) [5]


> В кустах может поджидать засада, если XMLNode - локальный
> идентификатор


Может, не спорю.


 
MaryM ©   (2008-06-02 15:09) [6]

Вот на
TTreeNode.Data := XMLNode
и ругается, что IXMLNode - это не Pointer.
Это можно как-то перевести в поинтер?

Другой вариант (имхо, более правдоподобный) как добавить в TTreeNode свойство (например, XML), в которое можно будет записывать IXMLNode? Т. е. общий механизм - куда что нужно дописать, чтобы добавить к TTreeNode свойство? Нужно создать новый компонент на основе TTreeView? А там как вписывать что-то в TTreeNode?


 
Сергей М. ©   (2008-06-02 15:12) [7]


> Это можно как-то перевести в поинтер?


Можно.

TTreeNode.Data := Pointer(XMLNode);

Но тебя может поджидать засада.


> Нужно создать новый компонент на основе TTreeView?


Не обязательно.


 
Palladin ©   (2008-06-02 15:22) [8]

думаю спасет искусственное увеличение... ээ.. количества ссылок  :)
XMLNode._AddRef
и потом на OnDelete, столь"же искусственное, его уменьшение )


 
Reindeer Moss Eater ©   (2008-06-02 15:31) [9]

а не лучше ли хранить ключевые атрибуты вместо ссылок на ноды?
а то ведь открыл перед загрузкой в дерево и так и держи открытым чтобы ссылки не протухли.


 
MaryM ©   (2008-06-03 09:30) [10]

Всем спасибо, особенно Сергею М., разобралась



Страницы: 1 вся ветка

Текущий архив: 2008.06.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
15-1210752135
Петр
2008-05-14 12:02
2008.06.29
Проблема с установкой Касперского


3-1201091754
Sairex
2008-01-23 15:35
2008.06.29
В чем ошибка?


2-1212434898
Jeqa
2008-06-02 23:28
2008.06.29
учет


2-1212397067
TBase_Tree
2008-06-02 12:57
2008.06.29
Помогите с Excel


6-1189576836
ient
2007-09-12 10:00
2008.06.29
Принудительный вызов Recv в чужом приложении