Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 455

/ вопрос открыт /

Здравствуйте, эксперты!

Есть компонент у Дельфи TTreeView. Мне нужно организовать БД у виде дерева. Допустим есть аудитория № 204 и в ней стоят 3 компа: 1,2,3. Мне нужно сделать Item 204 и в нем сделать подпункты 1,2,3. Как это можно сделать во время работы программы?

Заранее спасибо.

Жикльор Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Жикльор (статус: 5-ый класс)
Вопрос отправлен: 28 ноября 2009, 17:43
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 8; последнее сообщение — 28 ноября 2009, 18:31; участников в обсуждении: 4.
Вадим К

Вадим К (статус: Академик), 28 ноября 2009, 17:47 [#1]:

Надо уметь с базы дерево строить или просто не умеем добавить вложенный пункт?
Галочка "подтверждения прочтения" - вселенское зло.
Жикльор

Жикльор (статус: 5-ый класс), 28 ноября 2009, 17:50 [#2]:

Не умеем добавить вложенный пункт. Нет представления работы с TTreeNode.
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.
Жикльор

Жикльор (статус: 5-ый класс), 28 ноября 2009, 17:51 [#3]:

Эта прога просто студенческий набросок... Чтобы учитель отцепился.
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.
min@y™

min@y™ (статус: Доктор наук), 28 ноября 2009, 18:02 [#4]:

Ну смотри у TTreeNodes методы:

  • Add
  • AddChild
  • AddChildFirst
  • AddChildObject
  • AddChildObjectFirst
  • AddFirst
  • AddNode
  • AddObject
  • AddObjectFirst


А ещё лучше - справку по TTreeNodes.
Эх, жалко нельзя прицепить скриншот!
Админыч, когда сделаешь?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Жикльор

Жикльор (статус: 5-ый класс), 28 ноября 2009, 18:07 [#5]:

Я видал у TreeView1.Items.Insert или TreeView1.Items.Add. Что это делает и как ним пользоваться? И когда я пишу TreeView1.Items.Add(Что здесь нужно писать? Что такое Sibling?,А это название пункта,да?
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.
unl0K

unl0K (статус: Посетитель), 28 ноября 2009, 18:13 [#6]:

Вот вам пример:
TreeView1.Items.AddChild(TreeView1.Selected,'Название элемента');
//TreeView1.Selected - Родитель, в данном случае выделенный элемент.
Относись к людям так, как хотел бы, чтобы они к тебе относились!
Вадим К

Вадим К (статус: Академик), 28 ноября 2009, 18:18 [#7]:

Sibling - достаточно перевести с английского и всё понятно. В русском языке это "брат или сестра" (я не знаю одним словом).
Поэтому этот метод добавляет (или что там по контексту) в тот же уровень.
пройдемся в кратце
function Add(Node: TTreeNode; const S: string): TTreeNode; Добавляет новый узел с текстом S как последний узел уровня, на котором расположен Node.
function AddFirst(Node: TTreeNode; const S: string): TTreeNode; Вставляет новый узел с текстом S как первый из узлов уровня, на котором находится Node. Индексы последующих узлов увеличиваются на 1.
function Insert (Node: TTreeNode; const S: string): TTreeNode; Вставляет новый узел с текстом S сразу после узла Node на тот же уровень. Индексы последующих узлов увеличиваются на 1.
function AddChild(Node: TTreeNode; const S: string): TTreeNode; Добавляет узел с текстом S как последний дочерний узла Node.
function AddChildFirst(Node: TTreeNode; const S: string); TTreeNode; Вставляет новый узел с текстом S как первый из дочерних узлов узла Node. Индексы последующих узлов увеличиваются на 1

Во всех видно параметр Node - это узел дерева, относительно которого производиться вставка. Если дерево пустое, то туда следует вписать nil - будет вставляться в самый верхний уровень. Как не сложно заметить, все эти функции возвращают также узел (ноду). ее можно запоминать в переменной и потом использовать для "координации места добавления".
Поставьте на форму TreeView и кнопку, которой напишите такой код
TreeView1.Items.Clear;   //   очистка  списка
 //  добавление корневого узла 'производство' (индекс 0)
TreeView1.Items.Add(nil, 'производство');
 {добавление дочерних узлов 'цех 1' — 'цех 3' (индексы 1 - 3)}
TreeView1.Items.AddChild(TreeView1.Items.Item[0], 'цех 1');
TreeView1.Items.AddChild(TreeViewl.Items.Item[0], 'цех 2');
TreeView1.Items.AddChild(TreeView1.Items.Item[0], 'цех 3');
 {добавление корневого узла 'управление' после узла
      'производство' (индекс 4) }
TreeView1.Items.Add(TreeView1.Items.Item[0], 'управление');
 {добавление дочерних узлов 'администрация' и
      'бухгалтерия' узла 'управление' }
TreeView1.Items.AddChild(TreeView1.Items.Item[4], 'администрация');
TreeView1.Items.AddChild(TreeView1.Items.Item[4], 'бухгалтерия')
Потом думайте!
Галочка "подтверждения прочтения" - вселенское зло.
Жикльор

Жикльор (статус: 5-ый класс), 28 ноября 2009, 18:31 [#8]:

Спасибо большое всем!!!!!!!!!! Я понял и разобрался!!!
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:53
Выполнено за 0.03 сек.