Если вы только-только начали изучать Delphi, попробуйте сначала сделать в Delphi калькулятор, стандартный калькулятор или с тремя edit для ввода первого числа, вторую для ввода второго числа, а третью для вывода ответа. У вас обязательно получится эта программа, и вы поверите в свои силы программиста.
А позже своё приложениеможете сравнить с этим калькулятором.
unit s_calc_; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; // индикатор // кнопки с цифрами Button0: TButton; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; ButtonPlus: TButton; // "+" ButtonMinus: TButton; // "-" ButtonEnter: TButton; // "=" ButtonC: TButton; // "с" - очистка, сброс ButtonZ: TButton; // "," - десятичный разделитель procedure FormCreate(Sender: TObject); procedure DigitBtnClick(Sender: TObject); // кнопки "0" - "9" procedure OpBtnClick(Sender: TObject); // кнопки "+", "-" и "=" procedure ButtonCClick(Sender: TObject); procedure Edit1Change(Sender: TObject; var Key:Char); procedure ButtonZClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { 1. Во время создания формы свойству Tag каждой цифровой надо кнопки присвоить значение равное цифре, которая должна появится на индикаторе калькулятора. 2. После того как обычным образом будет создана процедура обработки события OnClick для одной из цифровых кнопок, например для кнопки "1", надо задать, что событие OnClick для остальных кнопок обрабатывает эта же процедура. Делается это выбором процедуры в списке, который появляется в результате щелчка на значке раскрывающегося списка в соответствующей строке вкладки Events. } var accum: real; // аккумулятор oper: integer; // операция: 1 - '+' ; 2 - '-'; // 0 - "выполнить" (кнопка "=") f: integer; { f = 0 ждем первую цифру нового числа, например, после выполнения операции, когда на индикаторе результат. f = 1 ждем остальные цифры. } // Щелчок на кнопках "0" - "9" procedure TForm1.DigitBtnClick(Sender: TObject); var Btn: TButton; ch: Char; begin Btn := Sender as TButton; ch := Chr(48+Btn.Tag); // chr(48) = '0'; chr(49) = '1' и т.д. // можно и так: ch := Btn.Caption; case Btn.Tag of 1..9: // кнопки "1" - "9" if f = 0 // первая цифра числа then begin Edit1.Text := ch; f := 1; // ждем остальные цифры end else Edit1.Text := Edit1.Text + ch; 0: // кнопка "0" if Edit1.Text <> '0' // на индикаторе 0 // чтобы на индикаторе не было // нескольких нулей в начале числа then Edit1.Text := Edit1.Text + '0'; end; end; // десятичная точка procedure TForm1.ButtonZClick(Sender: TObject); begin if Edit1.Text = '0' then begin Edit1.Text := '0,'; f := 1; end; if Pos(',',Edit1.Text) = 0 then Edit1.Text := Edit1.Text + ','; end; // выполнение операции procedure DoOper; var numb: real; // число на индикаторе begin // accum содержит результат предыдущей // операции, oper - код операции, которую // надо выполнить. Операнд находится // на индикаторе. numb := StrToFloat(Form1.Edit1.Text); case oper of 0: accum := numb; 1: accum := accum + numb; 2: accum := accum - numb; end; Form1.Edit1.Text := FloatToStr(accum); end; // Обрабатывает щелчок на кнопках "+", "-" и "=" procedure TForm1.OpBtnClick(Sender: TObject); { Надо выполнить предыдущую операцию, вывести результат на индикатор, запомнить текущую операцию и установить режим ожидания первой цифры нового числа. } var Btn: TButton; begin Btn := Sender as TButton; if f = 0 // ждем первую цифру, но пользователь // щелкнул на кнопке операции then // свойство Tag кнопки хранит код операции oper := Btn.Tag // запомним операцию else begin DoOper; // выполнить предыдущую операцию oper := Btn.Tag; // запомнить текущую операцию f:=0; // ждем первую цифру нового числа end; end; // кнопка "с" - очистка procedure TForm1.ButtonCClick(Sender: TObject); begin Edit1.Text := '0'; accum := 0; oper := 0; f := 0; // ждем первую цифру числа end; // нажатие клавиши в поле Edit1 procedure TForm1.Edit1Change(Sender: TObject; var Key:Char); begin Key := Chr(0); // не отображать символы end; procedure TForm1.FormCreate(Sender: TObject); begin oper := 0; end; end.