Форум: "Начинающим";
Текущий архив: 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.058 c