- •Объектно-ориентированное программирование
- •Оглавление
- •Лабораторная работа №1 Простой диалог Цель работы
- •Методические указания
- •1. Добавление нового компонента
- •2. Метка Label (страница Standard)
- •3. Окно редактирования Edit (страница Standard)
- •4. Кнопки Button, BitBtn (страницы Standard, Additional)
- •5. Компонент CheckBox (страница Standard)
- •6. Компоненты GroupBox, RadioButton (страница Standard)
- •7. Компонент ComboBox (страница Standard)
- •Пример выполнения задания
- •Int a, b, c; //стороны
- •Задания
- •Лабораторная работа №2 Управляющие компоненты Цель работы
- •Методические указания
- •1 . Компонент Timer (страница System)
- •If (!Str.IsEmpty()) // Если строка не пуста
- •2. Компонент PageControl (страница Win32)
- •3 . Компонент DateTimePicker (страница Win32)
- •4 . Компонент TrackBar (страница Win32)
- •5 . Компонент UpDown (страница Win32)
- •Задания
- •Лабораторная работа №3 Проектирование меню Цель работы
- •Методические указания
- •1 . Многострочные окна редактирования Memo (страница Standart) и RichEdit (страница Win32)
- •2. Создание меню с помощью мастера
- •3. Компоненты MainMenu и РоpupMenu (панель Standart)
- •4. Проектирование меню с помощью Конструктора Меню
- •5. Организация отклика на вызов пункта меню
- •6. Диалоги как модальные формы
- •7. Создание диалогового окна с помощью шаблона
- •8. Вызов диалогового окна пунктом меню
- •9. Прием введенных значений из диалогового окна в основное окно приложения
- •Задания
- •Лабораторная работа №4 Компоненты отображения данных. Вызов стандартных диалогов Цель работы
- •Методические указания
- •1. Компонент ImageList (страница Win32)
- •2. Компонент TreeView (страница Win32)
- •Int NomZach; // номер зачетной книжки
- •Int Shit; //номер читательского билета
- •3. Компонент ListView (страница Win32)
- •4. Компонент OpenDialog (страница Dialogs)
- •5. Компонент FontDialog (страница Dialogs)
- •6. Компонент ColorDialog (страница Dialogs)
- •Задания
- •Лабораторная работа №5 Подготовка справочной системы Цель работы
- •Методические указания
- •1. Создание текстового файла разделов (*.Rtf)
- •Сноска #
- •Сноска к (заглавная латинская буква)
- •2. Создание файла содержания (*.Cnt)
- •3. Создание файла проекта
- •4. Подключение справочной системы к приложению
- •Задание
- •Библиографический список
2. Компонент TreeView (страница Win32)
Компонент служит для отображения древовидных структур, где с каждым узлом дерева могут быть связаны некоторые данные.
Основное свойство компонента Items – элементы дерева. Каждый из них является объектом типа TTreeNodes и обладает своими свойствами и методами.
Ряд свойств компонента TreeView:
ShowButtons определяет показывать или нет кнопку «+»
ShowLines показывает линии дерева
ShowRoot отвечают за изображение линий связи с корневым элементом.
SortType позволяет автоматически сортировать ветви и узлы дерева.
stText - узлы автоматически сортируются по алфавиту
stData - сортировка по связанным с узлами объектам Data
stBoth - сортировка одновременно по тексту и объектам Data
Count — число узлов, управляемых данным, т.е. дочерних узлов, их дочерних узлов и т.п. Если значение Count узла равно нулю, то он является листом дерева.
Indent показывает число раскрываемых потомков.
Создавать узлы дерева можно как программно, так и с помощью редактора узлов дерева. Он вызывается двойным щелчком на компоненте TreeView или нажатием кнопки с многоточием около свойства Items в окне Инспектора Объектов. Здесь кнопка New Item позволяет добавить в дерево новый узел, New Subltem позволяет добавить в дерево дочерний узел. Если нажать на Delete, можно удалить выделенный узел дерева. Кнопка Load позволяет загрузить структуру дерева из файла — обычный текстовый файл. Уровни узлов обозначаются отступами. Например, ф айл дерева, представленного на рисунке справа имел бы вид:
Компоненты
Standard
MainMenu
Label
Edit
Additional
BitBtn
SpeedBtn
MaskEdit
В панели Item Properties редактора узлов можно задать такие свойства, как Text — надпись, появляющаяся в дереве около данного узла, а так же Image Index и Selected Index определяют индекс пиктограммы, отображаемой для узла, который соответственно не выделен и выделен пользователем в данный момент. Индексы начинаются с 0 и соответствуют списку изображений, хранящихся в отдельном компоненте ImageList. Указание на этот компонент можно задать в свойстве Images компонента TreeView. Значение по умолчанию равно -1 (пиктограммы изображаться не будут).
Доступ к информации об отдельных узлах осуществляется через свойство Item [int Index]. Например, чтобы обратиться к узлу дерева с индексом 0 и определить число дочерних узлов (на рис.1 это узел «Компоненты», число управляемых им узлов – 4), необходимо написать
{ TreeViewl->Items->Item[0]->Count }
Свойство Selected указывает узел, который выделен пользователем и доступно только во время выполнения программы. Если ни один узел не выбран, значение Selected равно NULL. При выделении пользователем нового узла происходит событие OnChange, в обработчик которого передается параметр TTreeNode *Node — выделенный узел. В этом обработчике можно предусмотреть действия, которые должны производится при выделении узла. Например:
void __fastcall TForm1::TreeView1Change (TObject *Sender, TTreeNode *Node)
{ Edit1->Text = Node->Text; } //Выводим в Edit1 надпись выделенного узла
С каждым узлом может быть связан некоторый объект и данные о нем. Ссылка на этот объект содержится в свойстве узла Data.
Основные методы:
AddChild ( ) – добавление дочернего узла
Add ( ) – добавление узла
Insert ( ) – вставка узла
Clear ( ) – очищение дерева
SaveToFile – сохранение структуры дерева в файл
Например, чтобы добавить узел «Компоненты», необходимо написать
{ TreeView1->Items->Add (NULL," Компоненты "); }
Пример 2. Пусть требуется создать дерево, узлами которого является номера групп, а при выборе соответствующего узла отображать сведения о студентах группы. Пусть пиктограммы, для отображения узла хранятся в компонентах ImageList1 и ImageList2 из примера 1. В основном модуле с расширением *.h перед классом формы объявим класс Student и определим экземпляры этого класса:
class Student
{ public:
AnsiString Fam;
AnsiString Name;