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

Вниз

Как хранить данные в TreeNode?   Найти похожие ветки 

 
M@G30   (2010-03-19 10:15) [0]

Доброе утро, Мастера!
Я начинающий. Только учусь. Задача такая. Есть компонент TtreeView1 и memo1. Выбираем ветку Treenode, далее в memo1 записываем небольшой текст. Задача состоит в том, как записывать/считывать эти данные? Мне непонятно, как использовать метод Data? Мастера помогите пожалуйста разобраться. Спасибо!


 
evvcom ©   (2010-03-19 10:49) [1]

Добавить treeView1.Items.Add
Прочитать treeView1.Items[0]
Data - где такой метод? Ты не DevExpress используешь?


 
12 ©   (2010-03-19 10:49) [2]

http://tinyurl.com/ybrae93


 
Плохиш ©   (2010-03-19 11:03) [3]


> Мне непонятно, как использовать метод Data?

Запись Data := ...;
Чтение ... := Data;


 
M@G30   (2010-03-19 11:11) [4]

Ты не DevExpress используешь?
Нет. Делфи 7 и только.
Data - имелось в виду данные. Извиняюсь за оплошность....


 
KSergey ©   (2010-03-19 12:01) [5]

задачу я не понял.

> Выбираем ветку Treenode, далее в memo1 записываем небольшой текст. Задача состоит в том, как записывать/считывать эти данные?

Какие данные? откуда и куда??


 
M@G30   (2010-03-19 12:09) [6]

Хорошо, поставлю вопрос по-другому:
В TreeView1 есть такая структура:
Главная ветка
  ветка 1         - выбрали записали в мемо тест 1
  ветка 2         - выбрали записали в мемо тест 2
  ветка 3         - выбрали записали в мемо тест 3

Суть в том, что мне не понятно, как сохранить этот текст, чтобы потом, вновь запустив программу можно было выбрать например ветка 1, получить записанный текст в мемо1, т.е. получим тест1


 
Медвежонок Пятачок ©   (2010-03-19 12:11) [7]

Суть в том, что мне не понятно, как сохранить этот текст чтобы потом, вновь запустив программу

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


 
KSergey ©   (2010-03-19 12:18) [8]

Создаем обработчик для события OnChange в TreeView
В нем пишем примерно так:

procedure TreeView1OnChange(Sender: TObject; Node: TTreeNode);
begin
 if        Node.Index = 0 then Memo1.Lines.Text := "test1"
 else if Node.Index = 1 then Memo1.Lines.Text := "test2"
 else if Node.Index = 2 then Memo1.Lines.Text := "test3";
end;

Так пойдет?


 
Медвежонок Пятачок ©   (2010-03-19 12:19) [9]

не, ему "тест" надо по-русски и с пробелом перед цифиркой


 
M@G30   (2010-03-19 12:32) [10]


> не, ему "тест" надо по-русски и с пробелом перед цифиркой

Не вижу ничего смешного :(


> procedure TreeView1OnChange(Sender: TObject; Node: TTreeNode);
>
> begin
>  if        Node.Index = 0 then Memo1.Lines.Text := "test1"
>  else if Node.Index = 1 then Memo1.Lines.Text := "test2"
>  else if Node.Index = 2 then Memo1.Lines.Text := "test3";
>
> end;
>
> Так пойдет?


Нет. Нужно чтобы из файла брать. Что-то подобное, дерево которое хочу научить реализовать есть в системе 1С


 
Медвежонок Пятачок ©   (2010-03-19 12:34) [11]

Нет. Нужно чтобы из файла брать.

А с утра было из свойтсва Data. Теперь уже из файла


 
Медвежонок Пятачок ©   (2010-03-19 12:39) [12]

Node.Data := StrNew(PChar("Мама мыла раму"));

переходим на другой нод
Node.Data := StrNew(PChar("Мама мыла папу"));

переходим на другой нод
Node.Data := StrNew(PChar("Мама мыла маму"));

строковые литералы заменить на данные прочитанные из файла


 
Медвежонок Пятачок ©   (2010-03-19 12:42) [13]

еще лучше хранить все мамы и рамы внутри xml вместе с именами самих узлов.

тривию грузить из xml
в node.data хранить индекс (интегер) узла xml файла в котором лежит текст узла.


 
MsGuns ©   (2010-03-19 15:00) [14]

PMyRec = ^RMyRec;
RMyRec = record
 S: string;
 SL: TStrings;
 i: integer;
 ed: TEdit;
 все-что-угодно
end;

var
 nd: TTreeNode;
 MyRec: PMyRec;
 ..
 nd := TreView.Items.Add(..);
 MyRec := NEW(PMyRec);  // Создать объект-структуру
 // Заполнить созданный объект
 with MyRec do
  begin
   s := "Вася";  
   sl := TStringList.Create;
   ....
 end;
 nd.Data := MyRec;

Дальше в коде где надо по узлу вытащить данные
ShowMessage(PMyRec(TreeView1.Items[i].Data).s);
Memo1.Lines.Items.AddItems(PMyRec(TreeView1.Items[i].Data).sl);

Ну и при освобождении узлов не забывать dispose объекту и всем вложенным  в него
объектам, если они там имеются (в примере это стринглист)


 
MsGuns ©   (2010-03-19 15:03) [15]

Только не забывать главное:
В дереве не хранится никаких "посторонних" данных, а лишь ССЫЛКИ на них (св-во Data)
и всю ответственность за организацию, создание, заполнение и освобождение
собственно самих данных несет программный код, но не дерево.


 
Медвежонок Пятачок ©   (2010-03-19 15:05) [16]

код юрского периода.
:)


 
MsGuns ©   (2010-03-19 15:07) [17]

Блин, на той железке, где я его набрал, и такой код - искусство :)


 
MsGuns ©   (2010-03-19 15:09) [18]

а ИМХО этот код для примера начинающему вполне нормальный :)


 
KSergey ©   (2010-03-19 15:23) [19]

> M@G30   (19.03.10 12:32) [10]
> Нет. Нужно чтобы из файла брать.

В вопросе про файлы ни слова!

> которое хочу научить реализовать есть в системе 1С

Т.е. вы считаете, что я сейчас кинусь смотреть как тама дерево в 1С реализовано?! Низафто!

Постановка задачи, грамотная и понятная другим людям - 80% профессионализма.
Я к тому, что обращайте внимание на векторы развития. Добавлять строчки в Data - это фигня без умения формулировать свои мысли на бумаге.
За формулирование, к стати, и платят много больше (раза в 2..2,5 по моим наблюдениям).



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

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

Наверх




Память: 0.51 MB
Время: 0.089 c
15-1273672717
istok
2010-05-12 17:58
2010.08.27
посоветуйте компоненты для DashBoard...


15-1264381741
Кто б сомневался
2010-01-25 04:09
2010.08.27
Пайкерит (прочный материал)


2-1270313219
АнатолийПа
2010-04-03 20:46
2010.08.27
Транспортная


15-1265372241
Alien1769
2010-02-05 15:17
2010.08.27
Задачка на логику


15-1270033255
pasha_golub
2010-03-31 15:00
2010.08.27
DLL средствами MSVC Express 2008