- •Объектно-ориентированное программирование
- •Оглавление
- •Лабораторная работа №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. Подключение справочной системы к приложению
- •Задание
- •Библиографический список
Int NomZach; // номер зачетной книжки
Int Shit; //номер читательского билета
Student (AnsiString F, AnsiString N,int NZ,int S)
{ Fam=F; Name=N; NomZach=NZ; Shit=S; };
};
Student* stud1 = new Student ("Митрохина","Ольга",1496,7015);
Student* stud2 = new Student ("Федоров","Алексей",1355,7047);
Student* stud3 = new Student ("Суровикова","Вера",3792,6034);
Student* stud4 = new Student ("Иванова","Ольга",4550,7532);
Student* stud5 = new Student ("Пронин","Андрей",4567,7542);
Добавим на форму компонент TreeView. Пусть дерево отображается при нажатии кнопки Button1 с надписью «Загрузить». Тогда в обработчике события Click необходимо программно заполнить узлы дерева значениями (это также можно сделать, внося изменения в свойство Items… компонента TreeView).
void __fastcall TForm1::Button3Click(TObject *Sender)
{
TTreeNode* Nd; //указатель на объект типа TTreeNodes
TreeView1->Items->Clear();
Nd=TreeView1->Items->Add(NULL,"Группа 240");
FillViewList (Nd,stud1); //заполнение дочерних узлов
FillViewList (Nd,stud2);
FillViewList (Nd,stud3);
Nd=TreeView1->Items->Add(NULL," Группа 243");
FillViewList (Nd,stud4); //заполнение дочерних узлов
FillViewList (Nd,stud5);
}
Здесь для каждого дочернего узла вызывается функция FillViewList ( ), которую необходимо заранее определить в заголовочном файле *.h в классе формы как
private: void __fastcall FillViewList(TTreeNode* Nd, Student* stud);
и реализовать в файле *.cpp
void __fastcall TForm1::FillViewList (TTreeNode* Nd, Student* stud)
{
TTreeNode* NdChild;
NdChild=TreeView1->Items->AddChild (Nd,stud->Fam);
NdChild->Data=stud; //заполнение узла данными
NdChild->ImageIndex=1;
NdChild->SelectedIndex=1;
}
Теперь прочитать данные, связанные с узлом, например, имя можно так:
Edit1->Text=((Student*) Nd->Data) ->Name; //Nd-выделенный узел
3. Компонент ListView (страница Win32)
Компонент ListView
позволяет представить данные в виде
списков, таблиц, крупных и мелких
пиктограмм, дает возможность представления
иерархических структур. Смысл дочерних
узлов другой: это информация, которая
появляется только в режиме vsReport - в виде
таблицы.
Ряд свойств компонента ListView:
Items – объекты типа TListItem, доступ к которым осуществляется с помощью редактора свойств или программно
ViewStyle - стиль отображения информации. Может принимать следующие значения:
vsIcon - крупные значки
vsSmallIcon - мелкие значки
vsList - список
vsReport - таблица
Columns – определяет список заголовков в режиме отображения таблицы vsReport , объекты типа TListColumn. При этом свойство ShowColumnHeaders должно быть установлено в true
Largelmages указывает на компонент, хранящий пиктограммы для отображения больших иконок (режим vsIcon)
SmallImages указывает на компонент, хранящий пиктограммы для режимов vsSmallIcon, vsList и vsReport
Свойство Items в свою очередь имеет ряд свойств, относящихся к определенному узлу и доступные только во время выполнения программы:
SubItems – определяет дочерний узел, т.е. колонки табличного списка
Caption - надпись, появляющаяся около пиктограммы Для дочерних узлов это свойство соответствует надписи, появляющейся в ячейках таблицы в режиме vsReport.
ImageIndex - определяет пиктограммы, индексы которых соответствует спискам изображений в компонентах ImageList. Указания на эти компоненты можно задать в свойствах Largelmages и SmallImages
Эти свойства можно задать в редакторе Items кнопками NewItem - новые узлы и NewSubltem - дочерние узлы. Здесь также задаются свойства Caption и ImageIndex. Свойство Columns также можно задать в специальном редакторе заголовков, вызываемым двойным щелчком на компоненте ListView или через Инспектор Объектов. При этом следует задавать значение свойства Caption
Основные методы компонента ListView:
Clear ( ) - очистка списка
Add ( ) - добавление элемента
Delete ( ) – удаление элемента
Пример 3. Продолжим рассмотренный выше пример. Добавим на форму компонент ListView и зададим начальный режим отображения списка, т.е. в виде списка
void __fastcall TForm1::FormCreate(TObject *Sender)
{ ListView1->ViewStyle = vsList; }
Заполним свойство Columns, добавив в него 4 элемента с надписями (свойство Caption) «Фамилия», «Имя», «Номер зачетной книжки», «Номер читательского билета». Это будут заголовки столбцов в табличном режиме отображения списка. Теперь сделаем так, чтобы при выборе пользователем конкретного узла дерева (группы или студента) информация о нем отображалась бы в окне списка ListView. Необходимо обрабатывать событие OnChange дерева:
void __fastcall TForm1::TreeView1Change(TObject *Sender, TTreeNode *Node)
{ int i;
ListView1->Items->Clear(); //очистка списка
if (Node->Level > 0) //если выбран дочерний узел
SetViewList (Node); //выводим сведения об отдельном студенте
else //если выбран корневой каталог с номером группы
for (i=0; i<Node->Count; i++)
SetViewList (Node->Item[i]); } //выводим сведения о всей группе
Здесь для каждого узла вызывается функция SetlViewList ( ), которую необходимо заранее определить в заголовочном файле *.h в классе формы как
private: void __fastcall SetViewList(TTreeNode* Nd);
и реализовать в файле *.cpp
void __fastcall TForm1::SetViewList(TTreeNode * Nd)
{ TListItem *Item1; //новый элемент списка
Item1=ListView1->Items->Add(); //добавляем элемент
Item1->Caption=((Student*)Nd->Data)->Fam; //надпись для пиктограммы
//заполняем колонки табличного списка, т.е. добавляем дочерние элементы
Item1->SubItems->Add(((Student*)Nd->Data)->Name);
Item1->SubItems->Add(IntToStr(((Student*)Nd->Data)->NomZach));
Item1->SubItems->Add(IntToStr(((Student*)Nd->Data)->Shit));
Item1->ImageIndex=2; //значок элемента
}
