- •Введение
- •Общие указания к выполнению практических работ
- •Практическая работа №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
- •Контрольные вопросы
Задание 2
Создать приложение — простой текстовый редактор, способный открывать существующий текстовый файл, создавать новый файл, сохранять файл.
Создайте новое приложение.
Переименуйте форму в MyNotepad.
Сделайте так, чтобы строка заголовка формы содержала надпись MyNotepad v1.0.
Сохраните приложение в личном каталоге под именем MyNotepad. Имя файла формы программы задайте Notepad.cpp. В процессе работы над приложением периодически сохраняйте результаты при помощи команды File/Save All.
В последующем (при создании приложений) может потребоваться разделитель (—), линия, отделяющая одни элементы приложения от других. Создадим, для примера, горизонтальный разделитель. Поместите в форму компонент Bevel, задайте его высоту равной 2 и сделайте так, чтобы он располагался по верхней границе формы на всю ее ширину.
В приложения кнопки обычно находятся на панелях. Поэтому создадим панель с требуемыми нам кнопками "New", "Open", "Save". Поместите в форму компонент Panel из палитры компонентов. Переименуйте ее в ToolBar.
Сделайте высоту панели равной 32. Свойство BevelOuter установите в bvNone. Обратите внимание на изменения, происшедшие с панелью.
Сотрите значение свойства Caption.
Измените свойство Align на alTop. Обратите внимание на взаимное расположение панели и разделителя.
В качестве кнопок используем компонент SpeedButton, специально предназначенный для установки в панель. Поместите компонент SpeedButton в панель (не в форму!). Не беспокойтесь о точном положении кнопки, выравнивание осуществим позднее.
Переименуйте кнопку в FileOpenBtn.
Установите свойство Left кнопки равным 5.
С помощью палитры выравнивания отцентрируйте кнопку в панели по вертикали.
На кнопку, реализованную через компонент SpeedButton (или через BitBtn) может быть помещен графический объект — значок, характеризующий функцию кнопки. Дважды щелкните в колонке Value напротив свойства Glyph компонента SpeedButton. Откроется окно редактора изображений. При помощи соответствующих кнопок перейдите вкаталог …\Builder\Borland Shares\Images\Buttons и выберите файл Fileopen.bmp (указать точный путь невозможно, так как он различен для разных версий Borland С++ Builder). Если все действия были выполнены правильно, на кнопке появится графическое изображение.
Аналогичным образом добавьте в панель кнопки FileSaveBtn и FileNewBtn. Разместите их "без зазора" по горизонтали.
На все кнопки создайте короткие всплывающие подсказки, аналогичные тем которые используются в Windows.
Добавьте в форму компонент Memo. Данный компонент предназначен для отображения текстовой информации, а также для ее набора. Информация определяется свойством Lines компонента.
Добейтесь того, чтобы компонент Memo занимал все оставшееся поле формы.
Дважды щелкните в колонке Value инспектора объектов напротив свойства Lines. В открывшемся окне удалите надпись Memo1.
Разрешите использование в компоненте Memo линеек прокрутки (ScrollBar).
Добавьте в форму, место не имеет значения, компоненты OpenDialog и SaveDialog. У данных компонентов настройте фильтр на работу с текстовыми (*.txt) и всеми файлами (*.*).
Форма должна иметь вид такой же как показано на рисунке.
23. Ниже приведен листинг программы, реализующей создание нового файла, считывание и сохранение файла. Найдите функции — обработчики события щелчка по соответствующей кнопке панели Вашего приложения. Реализуйте эти функции у себя. TMyNotepad *MyNotepad;
//
__fastcall TMyNotepad :: TMyNotepad(TComponent*Owner)
: TForm(Owner) { }
//
void __fastcall TmyNotepad :: FileOpenBtnClick(TObject*Sender) {
if (OpenDialog1 −> Execute()) {
if (Memo1 −> Modified) {
int res=Application −> MessageBox("The current file has changed. Save changes?", "MyNotepad Message", MB_YESNOCANCEL | MB_ICONWARNING);
if (res == IDYES) FileSaveBtnClick(Sender);
if (res == IDCANCEL) return; }
Memo1 −> Lines −> LoadFromFile(OpenDialog1 −> FileName); } }
void __fastcall TMyNotepad :: FileNewBtnClick(TObject*Sender) {
if (Memo1 −> Modified) {
int res=Application −> MessageBox("The current file has changed. Save changes?", "MyNotepad Message", MB_YESNOCANCEL | MB_ICONWARNING);
if (res == IDYES) FileSaveBtnClick(Sender);
if (res == IDCANCEL) return; }
if (Memo1 −> Lines −> Count > 0)
Memo1 −> Clear();
SaveDialog1 −> FileName = " "; }
//
void __fastcall TmyNotepad :: FileSaveBtnClick(TObject *Sender)
{
if (SaveDialog1 −> FileName != " ")
{
Memo1 −> Lines −> SaveToFile(SaveDialog1 −> FileName); Memo1 −> Modified = false;
}
else
{
SaveDialog1 −> Title="Save As";
if (SaveDialog1 −> Execute())
{
Memo1 −> Lines −> SaveToFile(SaveDialog1 −> FileName);
Memo1 −> Modified=false;
}
}
}
