- •Основы визуального программирования в среде Delphi 7.0
- •2. МеткаLabel(страницаStandard)
- •3. Окно редактирования Edit (страница Standard)
- •4. Кнопки Button, BitBtn (страницы Standard, Additional)
- •5. Компонент CheckBox(страница Standard)
- •6. Компоненты GroupBox, RadioButton (страница Standard)
- •7. Компонент ComboBox(страница Standard)
- •Пример выполнения задания
- •Практические задания
- •Занятие №2
- •2. Компонент PageControl (страница Win32)
- •3. КомпонентDateTimePicker(страницаWin32)
- •4. КомпонентTrackBar(страницаWin32)
- •5. Компонент UpDown (страница Win32)
- •Практические задания
- •Занятие №3
- •2. Создание меню с помощью мастера
- •3. Компоненты MainMenuи РоpupMenu(панельStandart)
- •4. Проектирование меню с помощью Конструктора Меню
- •5. Организация отклика на вызов пункта меню
- •6. Диалоги как модальные формы
- •7. Создание диалогового окна с помощью шаблона
- •8. Вызов диалогового окна пунктом меню
- •9. Прием введенных значений из диалогового окна в основное окно приложения
- •Практические задания
- •Занятие №4
- •2. Компонент TreeView(страницаWin32)
- •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 Рис 1. Вид дерева объектов
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, в обработчик которого передается параметр Node : TTreeNode — выделенный узел. В этом обработчике можно предусмотреть действия, которые должны производится при выделении узла. Например:
procedure TForm1.TreeView1Change (Sender : TObject , Node : TTreeNode)
begin
Edit1.Text := Node.Tеxt; //Выводим в Edit1 надпись выделенного узла
end;
С каждым узлом может быть связан некоторый объект и данные о нем. Ссылка на этот объект содержится в свойстве узла Data.
Основные методы:
AddChild – добавление дочернего узла
Add – добавление узла
Insert – вставка узла
Clear – очищение дерева
SaveToFile – сохранение структуры дерева в файл
Например, чтобы добавить узел «Компоненты», необходимо написать
TreeView1.Items.Add (NULL," Компоненты ");
Пример 2. Пусть требуется создать дерево, узлами которого является номера групп, а при выборе соответствующего узла отображать сведения о студентах группы. Пусть пиктограммы, для отображения узла хранятся в компонентах ImageList1 и ImageList2 из примера 1. В основном модуле перед классом формы объявим класс Student и определим экземпляры этого класса:
Type
TStudеnt = Class
public:
Fam : String;
Name : String;
NomZach : integer; // номер зачетной книжки
Chit : integer; //номер читательского билета
construсtor Create (F : String; N : String; NZ : integer; C : integer)
end;
…
В секции implementation реализуем конструктор:
…
cоnstructor TStudent.Creаte (F: String; N : String; NZ : integеr; C : integer)
begin
Fam:=F; Name:=N; NomZach:=NZ; Chit:=S;
end;
…
Опишем переменные класса студент:
Var
Stud1, Stud2, Stud3, Stud4, Stud5 : TStudent;
…
Инициализируем объекты:
stud1:= TStudent.Create('Митрохина','Ольга’,1496,7015);
stud2:= TStudent.Create(‘Федоров','Алексей',1355,7047);
stud3:= TStudent.Create('Суровикова',’Вера’,3792,6034);
stud4:= TStudent.Create(‘Иванова’,’Ольга’,4550,7532);
stud5:= TStudent.Create(‘Пронин’,’Андрей’,4567,7542);
Добавим на форму компонент TreeView. Пусть дерево отображается при нажатии кнопки Button1 с надписью «Загрузить». Тогда в обработчике события Click необходимо программно заполнить узлы дерева значениями (это также можно сделать, внося изменения в свойство Items… компонента TreeView).
procedure TForm1.Button3Click(Sender : TObject)
var
Nd : TTreeNode; //указатель на объект типа TTreeNodes
begin
TreeView1.Items.Clear;
Nd := TreeView1.Items.Add(NULL,"Группа ПИМ-Д21");
FillViewList (Nd,stud1); //заполнение дочерних узлов
FillViewList (Nd,stud2);
FillViewList (Nd,stud3);
Nd := TreeView1.Items.Add(NULL," ГруппаПИЮ-Д21");
FillViewList (Nd,stud4); //заполнение дочерних узлов
FillViewList (Nd,stud5);
end;
Здесь для каждого дочернего узла вызывается функция FillViewList ( ), которую необходимо заранее определить в секции interface модуля как
private: procedure FillViewList(Nd : TTreeNode, stud : TStudent);
и реализовать в секции implementation:
procedure FillViеwList(Nd : TTreeNode, stud : TStudent);
var
NdChild : TTreeNode;
begin
NdChild :=TreеView1.Items.AddChild (Nd, stud.Fam);
NdChild.Data:=stud; //заполнение узла данными
NdChild.ImageIndex:=1;
NdChild.SelectedIndex:=1;
end;
Теперь прочитать данные, связанные с узлом, например, имя можно так:
Edit1.Text:= TStudent(Nd.Data).Name; //Nd-выделенный узел