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

Вниз

Как хранить данные в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.06 c
2-1269192324
Невилл
2010-03-21 20:25
2010.08.27
Delphi2009 и StringGrid


15-1273123334
oldman
2010-05-06 09:22
2010.08.27
картинка, потрясающая воображение...


15-1270499402
Юрий
2010-04-06 00:30
2010.08.27
С днем рождения ! 6 апреля 2010 вторник


2-1269947335
Delphist2
2010-03-30 15:08
2010.08.27
EDatabaseError


15-1268429405
Юрий
2010-03-13 00:30
2010.08.27
С днем рождения ! 13 марта 2010 суббота





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский