Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: -0.955 c
15-1265614586
Andy BitOff
2010-02-08 10:36
2010.08.27
Крик души в чате.


15-1270016502
Alkid
2010-03-31 10:21
2010.08.27
Тонкий стёб над С++


6-1216978382
Zhekson
2008-07-25 13:33
2010.08.27
Отправка письма


15-1267518173
12
2010-03-02 11:22
2010.08.27
драйвера NVIDIA и клиенты удаленного рабочего стола Microsoft


15-1271686611
БарЛог
2010-04-19 18:16
2010.08.27
А как будет по-английки...




   Наверх