Главная страница
    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.49 MB
Время: 0.21 c
2-1268737444
misha_gr
2010-03-16 14:04
2010.08.27
Многопоточное приложение


9-1186514939
max_
2007-08-07 23:28
2010.08.27
поиск столкновений


15-1268371530
vajo
2010-03-12 08:25
2010.08.27
Непонятки с сетью на ноуте


2-1268820037
oleg1963lora
2010-03-17 13:00
2010.08.27
TimeToStr. Изменение FormatSettings


2-1274238844
NBAH1990
2010-05-19 07:14
2010.08.27
Не нажимается клавиша по коду





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