- •Введение
- •Общие указания к выполнению практических работ
- •Практическая работа №1
- •Теоретическая часть
- •Пример выполнения задания
- •Задание:
- •Спецификация программы:
- •Постановка задачи:
- •Блок-схема алгоритма программы
- •Варианты заданий
- •Контрольные вопросы
- •Практическая работа №2
- •Теоретическая часть
- •Методы стратегии ‘белого ящика’
- •Метод покрытия операторов
- •Метод покрытия решений (покрытия переходов)
- •1.3 Метод покрытия условий
- •1.4 Критерий решений (условий)
- •1.5 Метод комбинаторного покрытия условий
- •Порядок выполнения практической работы
- •Контрольные вопросы
- •Практическая работа №3
- •Теоретические часть
- •Задание 1
- •Задание 2
- •Контрольные вопросы
- •Практическая работа №6
- •Описание практической работы Теоретические сведения
- •Операторы обнаружения и обработки исключений
- •Задание 1
- •Задание 2
- •Задание 2
- •Контрольные вопросы
- •Практическая работа №8
- •Описание лабораторной работы Задание 1
- •Задание 2
- •Методы компонента tMemo
- •Задание 1
- •Задание 2
- •Задание 3
- •Контрольные вопросы
- •Практическая работа №10
- •Теоретическая часть
- •Класс Tstrings
- •Задание 1
- •Задание 2
- •Задание 3
- •Основные свойства компонента StringGrid
- •Описание лабораторной работы Задани 1
- •Задание 2
- •Задание 1
- •Контрольные вопросы
- •Практическая работа №13
- •Теоретическая часть
- •Описание лабораторной работы
- •Контрольные вопросы
- •Практическая работа №14
- •Теоретическая часть RadioGroup, RadioButton и GroupBox - группы радиокнопок
- •Свойства компонента CheckBox
- •Свойства компонента RadioButton
- •Button и BitBtn - управляющие кнопки
- •Свойства компонента BitBtn
- •Задание 1
- •Свойства компонента SpeedButton
- •Компонент UpDown
- •Описание лабораторной работы Задание 1
- •Задание 2
- •Задание 3
- •TrackBar и ScrollBar - ползунки и полосы прокрутки
- •Контрольные вопросы
- •Практическая работа №15
- •Теоретические сведения
- •Описание лабораторной работы Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Панели общего назначения — компоненты Panel, GroupBox, Bevel, Splitter
- •Задание 1
- •Задание 2
- •Компонент PageControl
- •Задание 3
- •Задание 4
- •Контрольные вопросы
- •Практическая работа №17
- •Теоретические сведения
- •Описание практическая работы Задание 1
- •Контрольные вопросы
- •Практическая работа №18
- •Теоретические сведения Компонент MainMenu - главное меню
- •Описание лабораторной работы Задание 1
- •Контрольные вопросы
- •Практическая работа №19
- •Теоретические сведения Стандартные диалоги и их фрагменты
- •Задание 1
- •Задание 2
- •Задание 3
- •Контрольные вопросы
- •Практическая работа №20
- •Теоретические сведения
- •I способ
- •II способ
- •Свойства компонента TreeViewl
- •Задание
- •Контрольные вопросы
- •Практическая работа №21
- •Теоретические сведения Компонент tImage
- •Задание 1
- •Ход выполнения
- •Задание 2
- •Ход выполнения
- •Задание 3
- •Задание 4
- •Задание 1
- •Задание 3
- •Задание 4
- •Контрольные вопросы
- •Практическая работа №23
- •Теоретические сведения
- •Практическая работа №24
- •Теоретические сведения Компонент построения графиков и диаграмм Chart
- •Свойства компонента Chart
- •Задание 1
- •Задание 2
- •Контрольные вопросы
- •Практическая работа №25
- •Прием перетаскиваемых объектов
- •Задание 1
- •Контрольные вопросы
Контрольные вопросы
Назовите системные диалоги.
Основной метод, которым производится обращение к любому диалогу?
Какие диалоговые окна являются модальными?
Назовите основными свойствами классов TOpenDialog и TSaveDialog.
В каком свойстве компонента SaveDialog устанавливаются расширения сохраняемых файлов?
Практическая работа №20
Тема: «Использование дерева данных в приложениях».
Цель работы: Научиться использовать дерево данных в приложениях.
Время выполнения: подготовка – 5 мин; выполнение – 165 мин.; проверка – 10 мин; всего – 180 мин.
Теоретические сведения
Компонент отображения дерева данных — TreeView
Компонент TreeView (страница Win32) служит для отображения иерархических данных в виде дерева, в котором пользователь может выбрать нужный ему узел или узлы.
Основным свойством TreeView, содержащим информацию об узлах дерева, является Items. Доступ к информации об отдельных узлах осуществляется через свойство Items[int Index]. Например, TreeViewl‑>Items->Item[0] — это узел дерева с индексом 0 (первый узел дерева). Каждый узел является объектом типа TTreeNodes, обладающим своими свойствами и методами (см.ниже).
Есть два способа формирования дерева: в окне редактора узлов дерева и программно.
I способ
Используется во время проектирования. Вызов окна редактора узлов производится двойным щелчком на компоненте TreeView или нажатием кнопки с многоточием около свойства Items в окне Инспектора Объектов.
Назначение кнопок окна редактора узлов
New Item (новый узел) позволяет добавить в дерево новый узел. Он будет расположен на том же уровне, на котором расположен узел, выделенный курсором в момент щелчка на кнопке New Item.
New Subltem (новый дочерний узел) позволяет добавить в дерево дочерний узел. Он будет расположен на уровень ниже уровня того узла, который выделен курсором в момент щелчка на кнопке New Subltem.
Delete (удалить) удаляет выделенный узел дерева.
Load позволяет загрузить структуру дерева из файла. Файл, хранящий структуру дерева это обычный текстовый файл, содержащий тексты узлов. Уровни узлов обозначаются отступами. Например, файл дерева и может иметь вид:
производство
цех 1
цех 2
цех 3
управление
администрация
бухгалтерия
II способ
Дерево можно формировать или перестраивать и во время выполнения приложения. Для этого служит ряд методов объектов типа TTreeNodes. Следующие методы позволяют вставлять в дерево новые узлы:
Add( Node, S) |
Добавляет новый узел с текстом S как последний узел уровня, на котором расположен Node. |
AddFirst( Node, S) |
Вставляет новый узел с текстом S как первый из узлов уровня, на котором находится Node. Индексы последующих узлов увеличиваются на 1. |
Insert(Node, S) |
Вставляет новый узел с текстом S сразу после узла Node на то же уровень. Индексы последующих узлов увеличиваются на 1. |
AddChiId( Node, S) |
Добавляет узел с текстом S как последний дочерний узла Node. |
AddChiIdFirst(Node, S) |
Вставляет новый узел с текстом S как первый из дочерних узлов узла Node. Индексы последующих узлов увеличиваются на 1 |
Например:
//вставить на место выделенного, остальные сдвигаются //вниз:
TreeView1->Items->Insert(TreeView1->Items->
Item[TreeView1->Selected->AbsoluteIndex], "");
//Вставить нулевым на тот же уровень, что и выделенный:
TreeView1->Items->AddFirst(TreeView1->Items->
Item[TreeView1->Selected->AbsoluteIndex], "");
//Добавляет новый узел как последний узел уровня, на //котором расположен выделенный:
TreeView1->Items->Add(TreeView1->Items->
Item[TreeView1->Selected->AbsoluteIndex], "");
Каждый из этих методов возвращает вставленный узел. Ниже в качестве примера приведен код, формирующий дерево, которое вы можете видеть на рис.1
Рис.1
TreeViewl->Items->Clear(); // очистка списка
// добавление корневого узла "производство" (индекс 0)
TreeViewl->Items->Add(NULL, "Мои рисунки");
/* добавление дочених узлов "цех 1" - "цех 3"
(индексы 1-3) */
TreeViewl->Items->AddChiId(TreeViewl->Items->Item[0] , "Мореходы")
TreeViewl->Items->AddChild(TreeViewl->Items->Item[0],"Художник Васильев")
TreeViewl->Items->AddChild(TreeViewl->Items->Item[0],"Фото ВОВ")
Добавим программно ещё один узел «Тексты» с подузлами «Биографии» и «Пояснения»:
Рис.2
/* добавление корневого узла "Тексты" после узла "Мои рисунки" (индекс 4) */
TreeViewl->Items->Add(TreeViewl->Items->Item[0], "Тексты"
/* добавление дочених узлов "Биографии" и "Поясненияё" узла "управление" */
TreeViewl->Items->AddChild(TreeViewl->Items->Item[4],"Биографии");
TreeViewl->Items->AddChild(TreeViewl->Items->Item[4],"Пояснения");
Дерево может быть сколь угодно разветвленным. Например, следующие операторы добавляют дочерние узлы «Крузенштерн» и «Лисянский» в сформированный ранее узел «Мореходы»:
TreeViewl->Items->AddChild(ТreeViewl->Items->Item[l], "Крузенштерн");
TreeViewl->Items->AddChiId(TreeViewl->Items->Item[l], "Лисянский");
Рис.3
TTreeNode *Node=TreeView1->Selected;
int level=Node->Level; //Определяем уровень выделенного узла
int ind=Node->Index; //Идекс выделенного узла внутри уровня
TreeViewl->Items->Item[l]->Text ;// Текст,связанный с узлом 1
Для удаления узлов имеется два метода: Clear(void), очищающий все дерево, и Delete(TTreeNode* Node), удаляющий указанный узел Node и все его узлы — потомки.
Например, оператор
TreeViewl->Items->Clear(); /*удалит в нашем примере все узлы*/
TreeViewl->Items->Delete(TreeViewl->Items->Item[l]) ; /*удалит узел «Мореходы» и его дочерние узлы*/
Для редактирования текста выделенного узла есть метод:
TreeView1->Selected->EditText() ;
Его можно вставить, например, в обработку события OnDblClick
Вызов контекстного меню правой клавишей мышки.
TreeView1->PopupMenu = PopupMenu1;
