Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы по дисциплине.doc
Скачиваний:
15
Добавлен:
31.05.2015
Размер:
1.02 Mб
Скачать

2. Усовершенствование калькулятора

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

Дважды нажмите кнопку Clear(компонентBtnClear)внутри окна проектировщика формы.

Введите следующий текст во вновь сгенерированный обработчик события:

procedure TForm1.BtnClearClick(Sender: TObject);

begin

EditOperand1.Text:='';

EditOperand2.Text:='';

EditResult.Text:='';

LabelOperator.Caption:='?';

LabelResult.Caption:='?';

end;

Эта программа очищает окна редактирования операндов и результата, а также устанавливает метки в виде знака вопроса. Все эти шаги очищают дисплей калькулятора.

LabelOperatorуказывает, какая операция калькулятора вызывалась последний раз. Чтобы это работало, вы должны установить символ операции в заголовок метки.

Добавьте следующий текст в обработчик события BtnAddClick:

LabelOperator.Caption:=BtnAdd.Caption;

LabelResult.Caption:='=';

Программа, которую вы ввели, гарантирует, что всякий раз, когда нажата кнопка плюса, в качестве метки операции появится символ "+". Кроме того, всякий раз, когда окно редактирования результата показывает правильный результат вычисления, метка результата изменится на знак "=".

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

Например, обработчик события целочисленного деления после того, как вы сделаете изменение, будет выглядеть так:

procedure TForm1.BtnDivClick(Sender: TObject);

begin

EditResult.Text:=

IntToStr(StrToInt(EditOperand1.Text) div

StrToInt(EditOperand2.Text));

LabelOperator.Caption:=BtnDiv.Caption;

LabelResult.Caption:='=';

end;

Обратите внимание, что если вы находитесь в процессе выполнения вычисления и хотите вернуться и изменить значение одного из операндов, старый результат всё ещё показан в окне результата. Так как это может запутать пользователя, который может не понять, правильный этот результат или нет, следует обеспечить средство автоматической очистки поля результата всякий раз, когда один из операндов меняется.

Делая последний шаг в процессе создания программы калькулятора со свободным вводом, нажмите на окно редактирования первого операнда компонента EditOperand1внутри Дизайнера формы.

Переключите Инспектор объекта на страницу "События", нажав на метку "События" в верхней части экрана.

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

Дважды нажмите столбец Value(справа) событияOnChangeдля генерации кода обработчика события. Сгенерированный обработчик события будет названEditOperand1Changeпо имени компонента, для которого он предназначен.

Так как Вы используете один и тот же обработчик события для обоих операндов, измените имя на несколько более обобщённое OperandChange.

Введите следующий текст в обработчик TForm1.OperandChange:

procedure TForm1.OperandChange(Sender: TObject);

begin

EditResult.Text:='';

LabelOperator.Caption:='?';

labelResult.Caption:='?';

end;

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