Лабораторная работа №06 по дисциплине "Информатика и программирование модуль 2"
ТЕМА: Обработка исключительных ситуаций. Перемещение и изменение размеров
---- компонентов и окон. Многооконные приложения.
ОБРАБОТКА ИСКЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ
---------------------------------
1. Обработка исключительных ситуаций может выполняться с использованием блоков
try ... except ... end; со следующим синтаксисом:
try
//Выполняемые операторы
except
//Операторы, выполняемые только при исключительной ситуации,
//возникшей при выполнении операторов блока try
end;
Блоки try ... except ... end; могут быть вложены друг в друга, причем
вложение допускается как среди операторов блока try,
так и среди операторов блока except.
СОЗДАНИЕ ПРОГРАММЫ
------------------
ПРОГРАММА 6-1 НАЧАЛО
------------- ------
2. Сохраните файлы модуля и проекта ПРОГРАММЫ 3-2
в другой папке (можно без изменения имен файлов).
В программе для хранения преобразованных значений расстояния и времени
и для вычисляемого значения скорости должны использоваться переменные
(например, с идентификаторами, соответственно, s, t, v).
Отредактируйте созданную программу таким образом, чтобы она не реагировала
на ввод нулевого значения времени после нажатия кнопки ВЫЧИСЛИТЬ
(в предположении, что такая ситуация возникнуть не может).
Добавьте к выполняемым операторам процедуры обработки нажатия
на кнопку ВЫЧИСЛИТЬ указанные ниже блоки
try ... except ... end; с имеющимися в них операторами и комментариями
и разместите в этих блоках ранее имевшиеся в процедуре операторы
в соответствии с комментариями в этих блоках:
try
//ПРЕОБРАЗОВАНИЕ ВВЕДЕННОГО ЗНАЧЕНИЯ РАССТОЯНИЯ
//Здесь должен быть оператор преобразования введенного значения расстояния
except
//ОБРАБОТКА ОШИБКИ ВВОДА ЗНАЧЕНИЯ РАССТОЯНИЯ
//Здесь должны быть операторы присвоения красного цвета шрифтам
//соответствующего текстового поля и надписи правее этого поля
ShowMessage('ОШИБКА ВВОДА ЗНАЧЕНИЯ РАССТОЯНИЯ');//Вывод сообщения
Exit; //Выход из процедуры обработки события
end;
try
//ПРЕОБРАЗОВАНИЕ ВВЕДЕННОГО ЗНАЧЕНИЯ ВРЕМЕНИ
//Здесь должен быть оператор преобразования введенного значения времени
except
//ОБРАБОТКА ОШИБКИ ВВОДА ЗНАЧЕНИЯ ВРЕМЕНИ
//Здесь должны быть операторы присвоения красного цвета шрифтам
//соответствующего текстового поля и надписи правее этого поля
ShowMessage('ОШИБКА ВВОДА ЗНАЧЕНИЯ ВРЕМЕНИ');//Вывод сообщения
Exit; //Выход из процедуры обработки события
end;
try
//ОБРАБОТКА ОШИБКИ ВЫЧИСЛЕНИЯ ЗНАЧЕНИЯ СКОРОСТИ
//Здесь должны быть операторы вычисления значения скорости
//и добавления к надписи СКОРОСТЬ: преобразованного значения скорости
except
//Здесь должен быть оператор присвоения красного цвета шрифту
//надписи СКОРОСТЬ:
ShowMessage('ОШИБКА ВЫЧИСЛЕНИЯ ЗНАЧЕНИЯ СКОРОСТИ');//Вывод сообщения
end;
Для каждого текстового поля создайте процедуру обработки события OnChange
(происходящего при редактировании текста в текстовом поле),
в каждой из которых должны выполняться операторы присвоения
первоначального цвета шрифтам
соответствующего текстового поля и надписи правее этого поля,
а также, в каждой из этих процедур,
оператор присвоения первоначального цвета шрифту надписи СКОРОСТЬ:
и оператор присвоения первоначального значения этой надписи.
ПРОГРАММА 6-1 ОКОНЧАНИЕ
------------- ---------
Проверьте работу программы с созданием исключительных ситуаций
в среде программирования и независимо от нее.
При выполнении программы в среде программирования для значения времени,
равного нулю, появляется окно (рисунок 2-1),

Рисунок 2-1
в котором следует нажать на кнопку Continue для продолжения работы программы.
Для возможности одновременного редактирования введенных с ошибками
значений расстояния и времени скопируйте созданный в программе блок
try ... except ... end;
для обработки исключительных ситуаций при вводе значения времени,
и вложите (вставьте) этот блок в аналогичный блок
для обработки исключительных ситуаций при вводе значения расстояния
между операторами вывода сообщения и выхода из процедуры обработки события.
Снова проверьте работу программы с созданием исключительных ситуаций
в среде программирования и независимо от нее.
ПЕРЕМЕЩЕНИЕ И ИЗМЕНЕНИЕ РАЗМЕРОВ КОМПОНЕНТОВ
--------------------------------------------
3. Для компонента в окне формы значения свойств Top и Left определяют,
соответственно, расстояние в пикселях относительно краев клиентской области
формы (не включающей в себя область заголовка формы и ее границы):
от верхнего края клиентской области формы до верхнего края компонента
и от левого края клиентской области формы до левого края компонента, или,
иначе говоря, определяют положение в клиентской области формы
левого верхнего угла компонента.
При изменении положения компонента его можно рассматривать как прямоугольник,
изменяющий свое положение внутри прямоугольника большего размера
(клиентской области формы). При этом высота и ширина клиентской области формы
определяются, соответственно, значениями ее свойств
ClientHeight и ClientWidth.
Например, для того, чтобы во время выполнения приложения кнопка TButton
оказалась расположенной вплотную к краям клиентской области формы,
в левом верхнем углу этой области,
в одной из процедур обработки событий могут, например, использоваться
операторы
Button1.Top:=0; Button1.Left:=0;
чтобы кнопка оказалась в правом нижнем углу клиентской области формы –
операторы
Button1.Top:=ClientHeight-Button1.Height;
Button1.Left:=ClientWidth-Button1.Width;
чтобы кнопка оказалась в центре клиентской области формы – операторы
Button1.Top:=ClientHeight div 2-Button1.Height div 2;
Button1.Left:=ClientWidth div 2-Button1.Width div 2;
или операторы
Button1.Top:=(ClientHeight-Button1.Height) div 2;
Button1.Left:=(ClientWidth-Button1.Width) div 2;
СОЗДАНИЕ ПРОГРАММЫ
------------------
ПРОГРАММА 6-2
-------------
4. Создайте приложение, при запуске которого в центре клиентской области формы
стандартного цвета
находится кнопка (типа TButton) небольшого размера стандартного цвета.
Затем, при нажатии на кнопку, эта кнопка
должна сначала переместиться вплотную в левый верхний угол
клиентской области формы
(то есть верхний и левый края формы должны вплотную
примыкать к соответствующим краям клиентской области формы).
Одновременно с перемещением кнопки форма должна изменить свой цвет
(см. также пункт 5).
При следующих нажатиях на кнопку эта кнопка должна перемещаться вплотную
в оставшиеся углы клиентской области формы
и одновременно увеличивать свою высоту и свою ширину
относительно первоначальных размеров сначала в 2, затем в 3, затем в 4 раза
и затем снова должна "вернуться" в левый верхний угол
клиентской области формы
с теми размерами, которые были у нее в этом углу.
Одновременно с перемещениями кнопки форма должна менять свой цвет.
При щелчке левой кнопкой "мыши" в области формы вне кнопки
кнопка должна оказаться с первоначальными размерами
в центре клиентской области формы,
а форма должна приобрести первоначальный цвет.
Кнопка должна перемещаться по углам клиентской области формы
против часовой стрелки при создании приложения на компьютере
с нечетным номером
и по часовой стрелке при создании приложения на компьютере
с четным номером.
Используйте для определения положения кнопки в форме ее свойства
Top и Left,
для определения размеров кнопки – ее свойства Height и Width,
для хранения номера состояния кнопки – свойство Tag кнопки
или переменную целочисленного типа, описанную в области описаний модуля
и являющуюся, таким образом, глобальной по отношению к процедурам
обработки событий в этом модуле и сохраняющей свое значение
после выхода из процедуры обработки события.
Размеры клиентской области формы, доступной для перемещения кнопки,
определяются значениями свойств формы ClientHeight и ClientWidth.
Все перемещения и изменения размеров должны правильно выполняться
независимо от размеров формы и кнопки, то есть для определения положения и
размеров кнопки следует использовать выражения с названиями свойств,
а не численные значения этих свойств (за исключением определения положения
кнопки в левом верхнем углу клиентской области формы).
Создайте и используйте для установки и вычисления начальных значений,
определяющих размеры и положение кнопки, процедуру обработки события формы
OnCreate, наступающего при создании формы (см. пункт 5).
ПЕРЕМЕЩЕНИЕ И ИЗМЕНЕНИЕ РАЗМЕРОВ ОКОН. МНОГООКОННЫЕ ПРИЛОЖЕНИЯ
--------------------------------------------------------------
5. При создании приложений, при выполнении которых изменяются
вид окна приложения, его размеры и положение на экране,
в процедурах обработки событий должны находиться операторы,
изменяющие значения таких, например, свойств формы,
как Color, Height, Width, Top, Left, Position и других.
Примеры записи операторов, изменяющих значения свойств формы:
Form1.Color:=clRed; //Изменение цвета формы на красный
Form1.Height:=Form1.Height div 2; //Уменьшение высоты формы в 2 раза
Form1.Top:=10; //Перед названием свойства указано имя формы
Left:=20; //Перед названием свойства можно не указывать имя главной формы
Свойство Color, определяющее цвет, может принимать значения из множества
специальных констант типа TColor (значения этих констант можно выбирать
в окне Object Inspector из раскрывающегося списка в строке с названием
свойства Color).
Значения свойства Color можно задавать также в виде шестнадцатеричных чисел
(например, значению константы clRed, определяющей чистый красный цвет,
соответствует число $000000FF,
зеленому цвету соответствует число $0000FF00,
желтому цвету – число $0000FFFF,
синему цвету – число $00FF0000,
белому цвету – число $00FFFFFF,
черному цвету – число $00000000).
Значения свойств Top и Left определяют, соответственно, расстояние в пикселях
от верхнего края экрана до верхнего края формы
и от левого края экрана до левого края формы,
или, иначе говоря, определяют положение на экране левого верхнего угла формы.
При изменении положения на экране окна приложения можно рассматривать
это окно как прямоугольник, изменяющий свое положение внутри прямоугольника
большего размера (экрана).
При этом высота и ширина экрана (рассматриваемого как компонент с именем
Screen) определяются, соответственно, значениями его свойств
Screen. Height и Screen. Width.
Например, для того, чтобы во время выполнения приложения его окно
оказалось вплотную к краям экрана в левом верхнем углу экрана,
в одной из процедур обработки событий могут, например, использоваться
операторы
Top:=0; Left:=0;
чтобы это окно оказалось в правом верхнем углу экрана –
операторы
Top:=0; Left:=Screen. Width-Width; //Width – ширина окна приложения
чтобы это окно оказалось в правом нижнем углу экрана – операторы
Top:=Screen. Height-Height; Left:=Screen. Width-Width;
//Height – высота, Width – ширина окна приложения
чтобы это окно оказалось в левом нижнем углу экрана – операторы
Top:=Screen. Height-Height; Left:=0;
того чтобы его окно оказалось в центре экрана – оператор
Position:=poScreenCenter;
или операторы
Top:=Screen. Height div 2-Height div 2;
Left:=Screen. Width div 2-Width div 2;
Наиболее характерным событием для формы является событие OnCreate,
наступающее при создании формы.
Процедура обработки этого события будет создана, если поместить указатель
"мыши" в область формы или на ее значок в окне Object TreeView и затем
выполнить двойной щелчок левой кнопкой "мыши".
Эта процедура обычно используется для установки и вычисления
начальных значений и выполнения других подготовительных действий
при запуске приложения.
Для формы можно также использовать событие OnClick (соответствует щелчку
левой кнопкой "мыши", когда ее указатель находится в клиентской области
формы), событие OnDblClick (соответствует двойному щелчку левой кнопкой
"мыши", когда ее указатель находится в клиентской области формы)
и другие события.
СОЗДАНИЕ ПРОГРАММЫ
------------------
ПРОГРАММА 6-3 НАЧАЛО
------------- ------
6. Создайте проект, состоящий из двух форм Form1 и Form2 (форму можно добавить
в проект командами меню File => New => Form – Delphi for Win32
и затем следует также сохранить соответствующий добавленной форме
файл модуля в той же папке, в которой должны быть сохранены файл первого
модуля и файл проекта).
После запуска соответствующего приложения в центре экрана должна появиться
форма стандартного цвета (далее Форма 1), над левым верхним углом которой
вплотную к ее верхней границе и к продолжению ее левой границы находится
форма стандартного цвета (далее Форма 2) с размерами, в 4 раза меньшими
соответствующих размеров Формы 1.
Затем, при щелчках левой кнопкой "мыши" по Форме 2, эта форма
должна перемещаться, находясь вплотную своей нижней или верхней границей,
соответственно, к верхней или нижней границе Формы 1,
а также находясь вплотную своей левой или правой границей,
соответственно, к продолжению левой или правой границы Формы 1,
или, проще говоря, Форма 2 должна перемещаться по наружным углам Формы 1
с ее верхней и нижней сторон.
При перемещениях Форма 2 должна менять свой цвет и, кроме того,
при перемещениях с нижней стороны Формы 1,
увеличивать свой горизонтальный размер по отношению
к первоначальному размеру, находясь у одного из углов Формы 1, в два раза,
находясь у другого из углов Формы 1, в три раза.
При щелчке левой кнопкой "мыши" в области Формы 1 Форма 2 должна оказаться
в том же положении, с тем же цветом и с тем же горизонтальным размером,
что и при запуске приложения.
Форма 1 должна перемещаться по наружным углам Формы 1
против часовой стрелки при создании приложения на компьютере
с нечетным номером
и по часовой стрелке при создании приложения на компьютере
с четным номером.
Используйте для определения положения форм на экране их свойства Top, Left и,
возможно Position, а также свойства экрана Screen. Height и Screen. Width,
для определения размеров форм – их свойства Height и Width,
для хранения номера состояния формы и других начальных значений –
их свойство Tag
или переменные целочисленного типа, описанные в области описаний модуля
и являющиеся, таким образом, глобальными по отношению к процедурам
обработки событий в этом модуле и сохраняющие свои значения
после выхода из процедуры обработки события.
ПРОГРАММА 6-3 ОКОНЧАНИЕ
------------- ---------
Все перемещения и изменения размеров должны правильно выполняться
независимо от размеров Формы 1, то есть для определения положения и
размеров Формы 2 следует использовать выражения с названиями свойств,
а не численные значения этих свойств.
Для появления на экране Формы 2 установите на стадии проектирования
значение ее свойства Visible равным True.
Создайте и используйте
– для установки и вычисления начальных значений,
определяющих размеры и положение форм,
процедуры обработки события формы OnCreate,
наступающего при создании Формы 1 или Формы 2; – для обработки щелчков по Форме 1 или Форме 2
процедуры обработки события формы OnClick.
При появлении во время компиляции и запуска приложения окна, такого же
или аналогичного показанному на Рисунке 6-1, следует нажать на кнопку Yes,

Рисунок 6-1
после чего в окне одного из модулей после строки с implementation появится
строка вида
uses FF2;
(информирующая о возможности использования ссылок в этом модуле
на форму, связанную с другим модулем).
Затем следует повторить компиляцию и запуск приложения.
ВНИМАНИЕ! Если при открытии файла проекта в окне среды программирования
Turbo Delphi отсутствует вкладка для доступа к какой-либо форме
и соответствующему модулю, то для появления этой вкладки
следует выполнить команду меню "View => Forms..."
(или "View => Units...").
ОТЧЕТ О ВЫПОЛНЕНИИ РАБОТЫ
-------------------------
7. Продемонстрируйте тексты созданных программ, а также их выполнение в среде
программирования и независимо от нее.
________________________________________________________________________________


