Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 1.doc
Скачиваний:
12
Добавлен:
13.08.2019
Размер:
668.16 Кб
Скачать

2.Следующий этап – проектирование основной формы приложения. В нашем приложении больше никаких форм и не будет Примерный вид формы на этапе проектирования показан на рисунке:

Поместите на форму три компонента Edit (окно ввода) со страницы Standard палитры компонентов. Первые два будут использоваться для ввода исходных данных, третий – для вывода результата операции. Свойства всех компонентов настраиваются в Object Inspector, который обычно располагается слева и внизу экрана. Свойств у компонента Edit довольно много, для удобства в Object Inspector они разбиты на группы. Нужные нам свойства находятся в группе Localizable. Свойство Text объекта Edit означает строку, которая в нём отображается, по умолчанию оно равно его имени. Установите для этих объектов Edit свойство Text равным пустой строке (очистите его).

Немного выше компонентов Edit поместите метку (компонент Label со страницы Standard), которая будет показывать, для чего предназначен этот Edit. Свойство Caption метки – это её текст (в нашем случае – Первое число Второе число Результат). Чтобы показать последнюю выполненную операцию, можно поместить на форму ещё одну метку между полями операндов, и первоначально присвоить её свойству Caption строку из одного или нескольких пробелов.

У большинства визуальных компонентов имеется свойство Font – шрифт. Если встать на него в Object Inspector, то рядом появится кнопка с многоточием. Нажав её, можно попасть в стандартное окно настройки шрифта и выбрать вид шрифта, его размер, цвет и некоторые другие свойства. Также у многих компонентов имеются свойства: Color – цвет фона, BorderStyle – тип границы, Name – имя компонента (его можно изменить на более осмысленное, чем то, которое даётся по умолчанию) и др.

Поместите на форму 4 кнопки (компоненты Button со страницы Standard), установите их свойства Caption равными “+”, ”-“, ”*”, ”/”. Если щелкнуть два раза по любой из кнопок, то откроется редактор, где уже будет иметься пока пустая процедура-обработчик события OnClick (Нажатие кнопки). Нужно дописать эту процедуру таким образом, чтобы при нажатии кнопки выполнялась нужная арифметическая операция и результат записывался в поле результата (т.е. в свойство Text третьего компонента Edit).

Текст обработчиков пишется на языке Object Pascal, который представляет собой расширение языка Pascal. Мы будем использовать новые конструкции и стандартные функции, поэтому на примере обработчика события OnClick кнопки “+” поясним логику разработки. Сначала запишем первый (простой) вариант обработчика:

procedure TForm1.Button1Click(Sender: TObject);

var x1,x2:Real;

begin

x1:= StrToFloat(Edit1.Text);

x2:= StrToFloat(Edit2.Text);

Edit3.Text:=FloatToStr(x1+x2);

Label2.Caption:='+';

end;

Выделенные цветом фрагменты были сформированы автоматически, а весь остальной текст нужно аккуратно набрать вручную.

Пояснения.

Функция StrToFloat предназначена для перевода строки в действительное число, посколько стандартные компоненты Edit позволяют вводить только строку текста, а арифметические операции можно выполнять только над числовыми данными (в нашем примере используется тип real). Следует помнить, что в качестве разделителя целой и дробной части числа эта функция использует разделитель, использующийся в Windows (обычно запятую).

Для вывода результата арифметической операции в компонент Edit3 нужно использовать обратную функцию FloatToStr

Заметим, что для целочисленных данных используются аналогичные функции StrToInt и IntToStr. Это пригодится на будущее.

3. Теперь самое время снова сохранить проект (Save All в меню или кнопка Save All на панели инструментов). Эта операция уже не занимает много времени, поэтому можно выполнять ее чаще.

Для запуска программы достаточно нажать клавишу F9 или кнопку с зеленой стрелкой на панели инструментов. Если вы не допустили ошибок при наборе и проект был правильно сохранен, на экране появится форма, которую вы только что спроектировали. Введите два любых числа и нажмите кнопку “+” – вы увидите сумму чисел.

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

4. Доработка текста приложения. С целью корректной обработки исключительных ситуаций изменим текст обработчика нажатия кнопки “+”, введя в него обращение к функции проверки исходных данных (мы назвали эту функцию Check и оформили отдельно, поскольку она может быть использована в обработчиках для всех кнопок):

Новый текст обработчика нажатия кнопки “+”

procedure TForm1.Button1Click(Sender: TObject);

var x1,x2:Real;

begin

if Check(x1,x2) then begin

Edit3.Text:=FloatToStr(x1+x2);

Label2.Caption:='+';

end;

end;

Напишем функцию Check, которая переводит введённые строки в действительные числа, одновременно проверяя их правильность.

Эту функцию следует поместить в тот же модуль, что и обработчики событий, непосредственно перед обработчиками событий.

function Check(var x1,x2:Real):Boolean;

begin

Check:=False;

With Form1 do begin

try

x1:=StrToFloat(Edit1.Text);

except

ShowMessage('Неверное значение первого операнда');

Edit1.SetFocus; exit;

end;

try

x2:=StrToFloat(Edit2.Text);

except

ShowMessage('Неверное значение второго операнда');

Edit2.SetFocus; exit;

end;

Check:=True;

end;

end;

Пояснения к тексту этой функции:

  • Функция StrToFloat переводит строку в действительное число. Если в строке содержится ошибка (допустим, пользователь программы забыл ввести число или ввел какие-то недопустимые символы), то функция не сможет выполнить перевод и сгенерирует исключительную ситуацию. Один из способов ее обработки - конструкция вида tryexceptend; Между try и except помещаются действия, при выполнении которых может возникнуть ошибка. Если ошибка действительно возникла, то выполняются действия между except и end, а затем происходит выход из процедуры. Чтобы программа не останавливалась при обнаружении ошибки, нужно сделать небольшую настройку в среде - сбросить флажок ‘Stop on Delphi exceptions’ в меню Tools | Debugger Options | Language exceptions

  • Стандартная функция ShowMessage предназначена для вывода небольших окон с сообщениями.

  • Вызов метода SetFocus делает компонент активным. Мы вызываем его, чтобы курсор сразу встал на значение, которое нужно исправить.

  • Поскольку компоненты Edit принадлежат форме, то, чтобы обратиться, например, к объекту Edit1, нам нужно либо писать каждый раз Form1.Edit1 , либо использовать оператор With Form1 do , что и было сделано в тексте функции.