C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Вопрос о TreeView и, связанных с ним объектами
SmAlex
  Отправлено: 27.02.2006, 15:58


Станционный диспетчер

Группа: Участник
Сообщений: 91



Подскажите, пож., кто знает:
Постановка задачи:

…..В процессе работы программы пользователь вводит данные и формирует при этом некую древовидную структуру в TreeView,
…………………
Шаг 1:
TreeView->Items->AddObject(TreeView->Selected, Edit->Text, ptr);

То есть каждому узлу ставится в соответствие объект с определёнными данными.
Далее, структура TreeView после каждого изменения сохраняется в файл

Шаг 2:
TreeView->SaveToFile(ExtractFilePath(Application->ExeName)+"FileTreeView");

Далее повторяется шаг 1 уже для нового узла с новым объектом и шаг 2.

Вопросы:
1. Сохраняются ли сами присоединённые объекты при шаге 2 или нужно предпринять для этого дополнительные действия?

2. Как при загрузке структуры TreeView из файла
TreeView->LoadFromFile(ExtractFilePath(Application->ExeName)+"FileTreeView");
по номеру выбранного узла Node:

NodeNumber=TreeView->Selected->AbsoluteIndex;

получить сведения о соответствующем выбранному узлу объекте?
У Архангельского (в книжке С++ Builder 6 ) на стр 176 приведен код -

TreeView->Items->Iten->Node[1]->Data;

К сожалению, не понимаю как это работает и что значит ?

Отредактировано SmAlex — 27/02/2006, 17:21
Valdemar
Отправлено: 27.02.2006, 17:41


Мастер участка

Группа: Участник
Сообщений: 433



TreeView->SaveToFile записывает в файл только узлы дерева, без связанных с ними объектами. Поэтому о записи объектов в файл, соответственно и чтении, вы должны позаботиться сами.
SmAlex
Отправлено: 27.02.2006, 17:50


Станционный диспетчер

Группа: Участник
Сообщений: 91



Спасибо, понятно — а ответ на второй вопрос Вам известен ? cool.gif
Doga
Отправлено: 27.02.2006, 19:59


Мастер участка

Группа: Участник
Сообщений: 575



Valdemar cобственно, ответил сразу на 2 Ваших вопроса.

TTreeNode::Data — это указатель на объект типа void:

QUOTE

Points to application-defined data associated with the tree node.

__property void * Data = {read=FData, write=SetData};

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.


Самому дереву (TTreeView) ничего не известно о структуре данных хранимых этим указателем. Поэтому эти объекты не будут ни записыватся, ни, тем более, читаться вышеупомянутыми процедурами.
Вся ответственность за использование и хранение этих данных ложится на Вас.

Следовательно, если Вы хотите сохранять и загружать эти данные, пишите свои процедуры LoadFomFile и SaveToFile...

Отредактировано Doga — 27/02/2006, 21:56
SmAlex
Отправлено: 27.02.2006, 22:44


Станционный диспетчер

Группа: Участник
Сообщений: 91



Понятно, спасибо .... smile.gif
Grigoriy
Отправлено: 28.02.2006, 05:30


Мастер участка

Группа: Участник
Сообщений: 381



QUOTE
Поэтому эти объекты не будут ни записыватся, ни, тем более, читаться вышеупомянутыми процедурами.
Вся ответственность за использование и хранение этих данных ложится на Вас.


Ну вот, например, если я выключу компьютер, а потом включу.
Так что ваши объекты приймут те же адреса в оперативной памяти?
SmAlex
Отправлено: 28.02.2006, 10:34


Станционный диспетчер

Группа: Участник
Сообщений: 91



smile.gif Уже понял = спасибо ! cool.gif

Вернуться в Вопросы программирования в C++Builder