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