Добавил:
ikot.chulakov@gmail.com Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы по Delphi с готовыми программами / Лабораторная работа №14 Первая программа.pdf
Скачиваний:
17
Добавлен:
12.07.2020
Размер:
1.16 Mб
Скачать

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

программы введет в поле редактирования, например, строку 6.2, то при выполнении инструкции

t:= StrToFloat(Edit2.Text)

возникнет исключение, т.к. при стандартной для России настройке Windows содержимое поля Edit2 и, следовательно, аргумент функции StrToFloat не является изображением дробного числа.

Если программа запущена из среды разработки, то при возникновении исключения выполнение программы приостанавливается и на экране появляется окно с сообщением об ошибке и ее типе. В качестве примера на рисунок 22 приведено окно с сообщением о том, что введенная пользователем строка не является дробным числом

Рисунок 22 – Пример сообщения о возникновении исключения (при запуске программы из Delphi)

После нажатия кнопки ОК в окне редактора кода будет выделена строка программы, содержащая инструкцию, выполнение которой вызвало исключение. Программист может продолжить выполнение программы (для этого надо из меню выбрать команду Run Step Over) или прервать ее выполнение. В последнем случае нужно из меню выбрать команду Run Program Reset.

При разработке программы программист должен постараться предусмотреть все возможные варианты некорректных действий пользователя, которые могут привести к возникновению ошибок времени выполнения (исключения), и обеспечить способы защиты от них. Обычно контроль введенных данных осуществляется с помощью механизма исключительных ситуаций. В некоторых случаях более эффективно использовать другие методы.

Внесение изменений

После нескольких запусков программы «Скорость бега» возникает желание внести изменения в программу. Например, было бы неплохо, чтобы после ввода дистанции и нажатия клавиши <Enter> курсор переходил в поле Время, а после введения времени фокус ввода получала бы кнопка «Вычислить». Чтобы в поля Дистанция и Время пользователь мог ввести только цифры.

В листинге 5 приведена программа Скорость бега, в которую добавлены процедуры обработки событий OnKeyPress для компонентов Edit1 и Edit2.

Листинг 5

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

Edit1: TEdit;

Edit2: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Button1: TButton; Button2: TButton;

procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char); procedure Edit2KeyPress(Sender: TObject; var Key: Char);

private

{Private declarations } public

{Public declarations } end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

 

 

 

dist

: integer; //

дистанция, метров

t

: real;

//

время, как дробное число

min

: integer; //

время, минуты

sek

: integer; //

время, секунды

v

: real;

//

скорость

begin

//получить исходные данные из полей ввода dist:=StrToInt(Edit1.Text); t:=StrToFloat(Edit2.Text);

//предварительные преобразования

min:=Trunc(t); // кол-во минут - это целая часть числа t sek:=Trunc(t*100) mod 100;// кол-во секунд - это дробная часть

числа t

// вычисление скорости

v:=(dist/1000) / ((min*60 + sek)/3600);

// вывод результата

Label4.Caption:='Дистанция: '+ Edit1.Text + ' м' + #13 + 'Время: '+IntToStr(min) + ' мин ' +

IntToStr(sek) + ' сек '+#13+

'Скорость: ' + FloatToStrF(v,ffFixed, 4,2) + '

км/час'; end;

procedure TForm1.Button2Click(Sender: TObject); begin

Close; // закрыть главное окно программы end;

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin

//Key - символ, соответствующий нажатой клавише.

//Если символ недопустимый, то процедура заменяет его

//на символ с кодом 0. В результате этого символ в поле

//редактирования не появляется и у пользователя создается

//впечатление, что программа не реагирует на нажатие некоторых

//клавиш.

case Key of '0'..'9':; // цифра

#8 :; // клавиша <Back Space>

#13 : Edit2.SetFocus; // клавиша <Enter> // остальные символы - запрещены

else Key :=Chr(0); // символ не отображать end;{case}

end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin

{Переменная DecimalSeparator объявлена в модуле SysUtils и содержит текущий разделитель дробной и целой части}

case Key of '0'..'9':; // цифра

#8 :; // клавиша <Back Space>

'.', ',': if pos(DecimalSeparator, Edit2.Text)=0 then Key:=DecimalSeparator else Key:=#0;

#13 : Button1.SetFocus; // клавиша <Enter> // остальные символы - запрещены

else Key :=Chr(0); // символ не отображать end;{case}

end;

end.

После внесения изменений проект следует сохранить. Для этого нужно из меню File выбрать команду Save all (Записать все).

Окончательная настройка приложения

После того как программа отлажена, необходимо выполнить ее окончательную настройку, т.е. задать название программы и выбрать значок, который будет изображать исполняемый файл приложения в папке или на рабочем столе, а также на панели задач во время работы программы.

Настройка приложения выполняется на вкладке Application диалогового окна Project Options (рисунок 23), которое появляется в результате выбора из меню команды Project

Options.

Вполе Title (Заголовок) надо ввести название приложения.

Чтобы назначить приложению значок, отличный от стандартного, нужно щелкнуть мышью на кнопке Load Icon. Затем, используя стандартное окно просмотра папок, найти подходящий значок (значки хранятся в файлах с расширением ico).

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

Рисунок 23 – Используя вкладку Application, можно задать значок и название программы

В состав Delphi входит программа Image Editor (Редактор изображений), при помощи которой программист может создать для своего приложения уникальный значок. Запускается Image Editor выбором соответствующей команды из меню Tools.

Чтобы начать работу по созданию нового значка, нужно из меню выбрать команду File New, а из появившегося списка – опцию Icon File (рисунок 24).

Рисунок 24 – Начало работы над новым значком

После выбора типа создаваемого файла открывается окно Icon Properties (рисунок 25), в котором необходимо выбрать характеристики создаваемого значка: size (Размер) – 32x32 (стандартный размер значков Windows) и colors (Палитра) – 16 цветов. В результате

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

нажатия кнопки ОК открывается окно Icon1.ico (рисунок 26), в котором можно, используя стандартные инструменты и палитру, нарисовать нужный значок.

Рисунок 25 – Выбор параметров значка

Рисунок 26 – Окно рисования значка

Процесс рисования в Image Editor практически ничем не отличается от процесса создания картинки в обычном графическом редакторе, например в Microsoft Paint. Однако есть одна тонкость. Первоначально поле изображения закрашено «прозрачным» (transparent) цветом. Если значок нарисовать на этом фоне, то при его выводе части поля изображения, закрашенные "прозрачным" цветом, примут цвет фона, на котором будет находиться значок.

В процессе создания картинки можно удалить (стереть) ошибочно нарисованные элементы, закрасив их прозрачным цветом, которому на палитре соответствует левый квадрат в нижнем ряду (рисунок 27).

Рисунок 27 – Палитра

Кроме «прозрачного» цвета в палитре есть «инверсный» цвет. Нарисованные этим цветом части рисунка при выводе на экран окрашиваются «инверсным», относительно