Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.03.02;
Скачать: [xml.tar.bz2];

Вниз

Как сделать ссылку ветки TreeNode на данные в ListBox   Найти похожие ветки 

 
MZG   (2008-02-06 11:07) [0]

Подскажите пожалуйста, как можно связать конкретную ветку компонента TreeView (TreeNode) с данными компонента ListBox?


 
Смирнов   (2008-02-06 11:50) [1]

TTreeNode.Data типа pointer. Через него и связывай.


 
Игорь Шевченко ©   (2008-02-06 11:53) [2]

Я вроде ссылку давал в твоей предыдущей ветке.
Не помогло или не скачалось ?


 
{RASkov} ©   (2008-02-06 12:07) [3]

> [0] MZG   (06.02.08 11:07)

S:=TStringList.create;
S.Add("New Str");
TreeView.Items.Add(nil "Item").Data:=S;


Достаем:
ListBox.Items.Assign(TStrings(TreeNode.Data));


 
MZG   (2008-02-06 13:38) [4]

У меня инет тормозной. Едва скачал. Разобрался, но немного.

Только из поста [3] есть вопрос один.
Если саму структуру TreeView и содержимое списка ListBox сохранить в файл. То реально ли в дальнейшем работать? Я имею в виду, сохраняться ли ссылки дерева и данных?


 
{RASkov} ©   (2008-02-06 13:46) [5]

> [4] MZG   (06.02.08 13:38)

В TreeNode.Data будут лежать только ссылки(указатели) на СтрингЛисты, которые автоматом не сохраняются....
А листбокс тут вообще не причем.... он только визуализирует данные... конкретно стринглисты ссылки на которые находятся в TreeNode.Data


 
MZG   (2008-02-06 13:50) [6]

т.е. нужно необходимое количество стринглистов (заранее определенное), для каждого указателя? Я правильно понимаю?


 
{RASkov} ©   (2008-02-06 13:53) [7]

> [6] MZG   (06.02.08 13:50)

Ну в принципе верно... тыж в каждом итеме тривью хочешь дополнительную инфу, так ведь? Вот эта инфа будет в стринглистах... для каждого итема свой стринглист со своими строками....


 
MZG   (2008-02-06 13:55) [8]

Выходит, что для дальнейшей визуализации, необходимо сохранять стринлисты?


 
{RASkov} ©   (2008-02-06 13:57) [9]

> [8] MZG   (06.02.08 13:55)

Ну не сами стринглисты, а строки из них..... У стринглистов есть методы SaveTo(LoadFrom)File(),...
...так, на всякий случай :)
И при удалении Итема в ТриВью, нужно самим заботится об освобождении памяти...


 
{RASkov} ©   (2008-02-06 13:58) [10]

> И при удалении Итема в ТриВью, нужно самим заботится об
> освобождении памяти...

... занимаемой под стринглисты


 
MZG   (2008-02-06 14:04) [11]

Да-да, само-собой - освобождение памяти обязательно!
{RASkov} ты прям помогаешь думать, благодаря тебе мозги шевелятся!
Спасибо!
И ещё пара вопросов относительно темы.

1. Если количество стринглистов (или строк) быдет увеличиваться, то как правило, нужно отводить память для работы с ними, типа New() despore() ???

2. Предположим, что имеется некая структура дерева treeview и имеется некое количество stringlist-ов. Структура дерева и данные стринглистов также сохранены. После повторного запуска программы у меня все сохранится? Или для этого все же желательно реализовать запись иным способом. Например, в поток?


 
{RASkov} ©   (2008-02-06 14:21) [12]

> [11] MZG   (06.02.08 14:04)
> 1. Если количество стринглистов (или строк) быдет увеличиваться,
> то как правило, нужно отводить память для работы с ними,
> типа New() despore() ???

Никаких New !!! У тебя уже все реализовано в Data т.е. твой TreeNode.Data:=S это почти тоже самое что и TreeNode.Data:=TStringList.Create;
И потом почти работаешь так TreeNode.Data.Add(""); т.е. так TStrings(TreeNode.Data).Add("");

2 - все сам.... и сохранение и загрузку.... я же уже говорил об этом... Нет у тебя никаких дополнительных строк в TreeNode.DAta - там только указатель на них


 
{RASkov} ©   (2008-02-06 14:28) [13]

> [11] MZG   (06.02.08 14:04)
> Структура дерева и данные стринглистов также сохранены

А как они сохранены? Каким способом(методом, кодом)....


 
MZG   (2008-02-06 16:09) [14]

У меня что-то не получается:(

В рамках эксперимента скопировал код.
Ничего не получилось. компилятор указывает на ошибку
ListBox.Items.Assign(TStrings(TreeNode.Data));

У меня так:


var
Node: TTreeNode;
MyString: TStringList;

begin
MyString:=TStringList.create;
MyString.Add("New Str");
TreeView.Items.Add(nil "Item").Data:=MyString;
end;


далее щелчок на выбранном узле дерева...

ListBox.Items.Assign(TStrings(Node.Data));


В MyString добавлено 4 строки на каждый узел. При попытке выбрать узел появляется ошибка.

Подскажи пожалуйста, что не так делаю.


 
DVM ©   (2008-02-06 16:21) [15]


> MZG  

 ListBox1.Items.Assign(TStrings(TreeView1.Selected.Data));


 
MZG   (2008-02-06 17:01) [16]

Разобрался! :)
Большое спасибо всем!



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

Форум: "Начинающим";
Текущий архив: 2008.03.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.042 c
8-1174354813
DDDeN
2007-03-20 04:40
2008.03.02
Передать аудио-поток на IceCast


15-1201286106
Джо
2008-01-25 21:35
2008.03.02
Восстановление данных учетной записи (Win XP)


15-1198581317
Nucer
2007-12-25 14:15
2008.03.02
SendMessage из PHP


2-1202485682
Ksanf
2008-02-08 18:48
2008.03.02
Обход графа


2-1202564853
Makxs
2008-02-09 16:47
2008.03.02
интересный вопрос





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский