
- •Когда используется компонент ImageList? Как в процессе проектирования загружаются изображения? Какие свойства имеют изображения?
- •Приведите примеры иерархических данных. Какие компоненты способны отображать такие данные и в каком виде?
- •Как осуществляется доступ к отдельным узлам дерева?
- •Как проектировать дерево?
- •Какие свойства и как можно указать для каждого нового узла дерева?
- •Расскажите о формировании дерева во время выполнения приложения.
- •Как узнать число узлов дерева, управляемых данным узлом?
- •Какое свойство компонента TreeView указывает выделенный узел?
- •Какие события происходят при выделении узла дерева? Какие параметры передаются в обработчики этих событий?
- •Какие события компонента TreeView связаны с развертыванием и свертыванием узлов? Какие параметры передаются в обработчики этих событий?
- •Как используются обработчики событий«нажать/отжать клавишу» для работы с деревом?
- •Что представляет собой компонент StatusBar? Какие возможности предоставляют его свойства?
- •Как задать свойства панелей?
- •Как занести в панель текст в процессе проектирования и изменять его программно во время выполнения?
- •На примере расскажите о применении технологии Drag&Drop.
- •Какие свойства, общие для всех визуальных компонентов, связаны с процессом перетаскивания?
- •Какие события и какой метод связаны с процессом перетаскивания?
- •Расскажите о назначении компонента ListView.
- •Расскажите о свойствах компонента ListView. Как пользоваться редактором элементов ListView? Редактором заголовков?
- •Расскажите об использовании компонента ListView в процессе проектирования.
- •Как с помощью меню можно изменять вид списка в окне ListView и перемещать пиктограммы?
- •Как упорядочить расположение пиктограмм?
Расскажите о формировании дерева во время выполнения приложения.
Для этого имеется ряд методов объектов типа 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 |
Каждый из приведенных выше методов возвращает вставленный узел.
Какие методы позволяют вставлять в дерево новые узлы?См.6.
Какие методы позволяют вставлять в дерево новые узлы, если с каждым узлом может быть связан некоторый объект?
См.6.
Как найти текст и объект, связанный с некоторым узлом дерева?
Текст, связанный с некоторым узлом, можно найти с помощью его свойства Text. Например, TreeView1->Items->Item[1]->Text – это надпись ”ИТ".
Объект, связанный с некоторым узлом, можно найти с помощью его свойства Data. Например, TreeView1->Items->Item[1]->Data.
Как удаляются узлы дерева?
Для удаления узлов есть два метода: Clear(void), очищающий все дерево, и Delete(TTreeNode* Node), удаляющий указанный узел Node и все его узлы-потомки. При удалении узлов, связанных с объектами, объекты не удаляются.
Как избежать мерцания изображения дерева при его реорганизации?
Реорганизация дерева, связанная с созданием или удалением многих узлов, может вызывать неприятное мерцание изображения. Избежать этого можно с помощью методов BeginUpdate (запрещает перерисовку дерева) и EndUpdate (разрешает перерисовку дерева). Таким образом, изменение структуры дерева может осуществляться так:
TreeView1->Items->BeginUpdate();
<операторы изменения дерева>
TreeView1->Items->EndUpdate();
Если метод BeginUpdate применен подряд несколько раз, то перерисовка дерева произойдет только после того, как столько же раз будет применен метод EndUpdate.