| 
| 
 | Вопрос # 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™ (статус: Доктор наук), 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 (статус: Посетитель), 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]:Спасибо большое всем!!!!!!!!!! Я понял и разобрался!!! Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |