- •Пример 1. Применение стандартных кнопок, меток и полей редактирования
- •Пример 2. Диалоговые окна
- •Пример 1. Радиокнопки
- •Текст файла Unit1.Pas
- •Пример 2. Использование компонента CheckBox
- •Текст файла Unit1.Pas
- •Пример 3. Калькулятор
- •Пример 1. Строка состояния
- •Пример 2. Системные диалоги. Загрузка текстового файла
- •Пример 3. Системные диалоги. Изменение параметров шрифта
- •Способ 2
- •Пример 2. Геометрические фигуры. Типы заливок
- •Пример 3. Построение графика функции на канве. Преобразование координат
- •Пример 1. Загрузка графических изображений
- •Пример 2. Компонент Timer
Пример 3. Калькулятор
В этом примере мы создадим приложение-калькулятор, в котором можно выполнять арифметические действия над целыми числами, а также производить следующая вычисления:
,
где
,
и
–
введённые числа.
В приложении должно быть:
три метки (Label)
два поля редактирования (Edit) для ввода чисел и , по умолчанию в полях должны быть нули
шесть кнопок
(«+», «-», «*», «/», «
»,
«Выход»)
при нажатии оной из кнопок (кроме кнопки «Выход») должно отображаться диалоговое окно с результатом действия
при нажатии на кнопку «Выход» приложение должно завершать свою работу
Расположите компоненты как показано на рисунке и измените их свойства:
Вычисление результатов арифметических операций можно организовать разными способами. В простейшем случае можно написать команду прямо в процедуре по обработке события, связанного с нажатием соответствующей кнопки, а можно написать отдельную процедуру или функцию для нахождения искомой величины, а затем вызвать её из тела процедуры, принадлежащей соответствующей кнопке.
В тексте программы для нахождения суммы написаны и процедура и функция, но используется только процедура, а команда, вызывающая функцию, и команда, вычисляющая сумму без использования подпрограмм, закомментированы.
Текст файла Unit1.pas
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; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1 : TForm1; x, y, res1 : integer; res2 : real;
implementation
{$R *.dfm}
// процедура для нахождения суммы двух чисел procedure Summa(a,b : integer; var c : integer); begin c := a+b; end;
// функция для нахождения суммы двух чисел function Sum(a,b : integer): integer; begin sum := a+b; end;
// рекурсивная функция для нахождения факториала function factorial(x : integer): integer; begin if x=1 then factorial := 1 else factorial := x*factorial(x-1); end;
procedure TForm1.Button1Click(Sender: TObject); begin x := StrToInt(Edit1.Text); y := StrToInt(Edit2.Text); Summa(x,y,res1); //res1 := x + y; //res1 := Sum(x,y); ShowMessagePos(IntToStr(res1),300,200); end;
procedure TForm1.Button2Click(Sender: TObject); begin x := StrToInt(Edit1.Text); y:= StrToInt(Edit2.Text); res1 := x - y; ShowMessagePos(IntToStr(res1),300,200); end;
procedure TForm1.Button3Click(Sender: TObject); begin x := StrToInt(Edit1.Text); y:= StrToInt(Edit2.Text); res1 := x * y; ShowMessagePos(IntToStr(res1),300,200); end;
procedure TForm1.Button4Click(Sender: TObject); begin x := StrToInt(Edit1.Text); y:= StrToInt(Edit2.Text); res2 := x / y; ShowMessagePos(FloatToStr(res2),300,200); end;
procedure TForm1.Button5Click(Sender: TObject); begin x := StrToInt(Edit1.Text); y:= StrToInt(Edit2.Text); res1 := Sum(x,y); ShowMessagePos(FloatToStr(factorial(res1)),300,200); end;
end. |
