Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
занятие 5.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
35.28 Кб
Скачать
  1. Расскажите о формировании дерева во время выполнения приложения.

Для этого имеется ряд методов объектов типа TTreeNodes.

Следующие методы позволяют вставлять в дерево новые узлы:

Add(TTreeNode* Node,

const System::AnsiString S)

Добавляет новый узел с текстом S как последний узел уровня, на котором расположен Node

AddFirst(TTreeNode* Node,

const System::AnsiString S)

Вставляет новый узел с текстом S как первый из узлов уровня, на котором находится Node. Индексы последующих узлов увеличиваются на 1

Insert(TTreeNode* Node,

const System::AnsiString S)

Вставляет новый узел с текстом S сразу после узла Node на тот же уровень. Индексы последующих узлов увеличиваются на 1

AddChild(TTreeNode* Node,

const System::AnsiString S)

Добавляет узел с текстом S как последний дочерний узла Node

AddChildFirst(TTreeNode* Node,

const System::AnsiString S)

Вставляет новый узел с текстом S как первый из дочерних узлов узла Node. Индексы последующих узлов увеличиваются на 1

С каждым узлом может быть связан некоторый объект. Добавление таких узлов осуществляется методами, аналогичными приведенным выше, но содержащими в качестве параметра еще указатель на объект:

AddObject(TTreeNode* Node,

const System::AnsiString S, void* Ptr)

Добавляет новый узел с текстом S и объектом Ptr как последний узел уровня, на котором расположен Node

AddObjectFirst(TTreeNode* Node,

const System::AnsiString S, void* Ptr)

Вставляет новый узел с текстом S и объектом Ptr как первый из узлов уровня, на котором находится Node. Индексы последующих узлов увеличиваются на 1

InsertObject(TTreeNode* Node,

const System::AnsiString S, void* Ptr)

Вставляет новый узел с текстом S и объектом Ptr сразу после узла Node на тот же уровень. Индексы последующих узлов увеличиваются на 1

AddChildObject(TTreeNode* Node,

const System::AnsiString S, void* Ptr)

Добавляет узел с текстом S и объектом Ptr как последний дочерний узла Node

AddChildObjectFirst(TTreeNode* Node, const System::AnsiString S,

void* Ptr)

Вставляет новый узел с текстом S и объектом Ptr как первый из дочерних узлов узла Node. Индексы последующих узлов увеличиваются на 1

Каждый из приведенных выше методов возвращает вставленный узел.

  1. Какие методы позволяют вставлять в дерево новые узлы?См.6.

  2. Какие методы позволяют вставлять в дерево новые узлы, если с каждым узлом может быть связан некоторый объект?

См.6.

  1. Как найти текст и объект, связанный с некоторым узлом дерева?

Текст, связанный с некоторым узлом, можно найти с помощью его свойства Text. Например, TreeView1->Items->Item[1]->Textэто надпись ”ИТ".

Объект, связанный с некоторым узлом, можно найти с помощью его свойства Data. Например, TreeView1->Items->Item[1]->Data.

  1. Как удаляются узлы дерева?

Для удаления узлов есть два метода: Clear(void), очищающий все дерево, и Delete(TTreeNode* Node), удаляющий указанный узел Node и все его узлы-потомки. При удалении узлов, связанных с объектами, объекты не удаляются.

  1. Как избежать мерцания изображения дерева при его реорганизации?

Реорганизация дерева, связанная с созданием или удалением многих узлов, может вызывать неприятное мерцание изображения. Избежать этого можно с помощью методов BeginUpdate (запрещает перерисовку дерева) и EndUpdate (разрешает перерисовку дерева). Таким образом, изменение структуры дерева может осуществляться так:

TreeView1->Items->BeginUpdate();

<операторы изменения дерева>

TreeView1->Items->EndUpdate();

Если метод BeginUpdate применен подряд несколько раз, то перерисовка дерева произойдет только после того, как столько же раз будет применен метод EndUpdate.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]