§ 5. Стварэнне дадаткаў

5.6. Стварэнне дадатку «Калькулятар»

Стварэнне калькулятара пачнём з канструявання формы. На ёй трэба размясціць: поле Edit для ўводу/вываду лікаў, 10 кнопак з лічбамі, 4 кнопкі з арыфметычнымі дзеяннямі, кнопку «=» і кнопку «С» — ачысціць (прыклад 5.24).

Пры націску на кнопку з лічбай праграма павінна дапісаць гэтую лічбу да ліку ў поле Edit. Пры націску на кнопку з арыфметычным дзеяннем трэба запомніць лік, які ў дадзены момант знаходзіцца ў полі Edit, і ачысціць поле для уводу другога ліку. Лікі будзем захоўваць у дзвюх пераменных n1, n2 тыпу integer. Знак аперацыі будзем захоўваць у пераменнай znak тыпу char. Пераменныя апісваюцца як глабальныя. Пры націску на кнопку «=» выконваецца арыфметычнае дзеянне і выводзіцца вынік.

Для адлюстравання кнопак можна выкарыстоўваць кампанент BitBtn, тады кнопкі могуць змяшчаць малюнак на паверхні (напрыклад, малюнкі з лічбамі). Уласцівасць для размяшчэння малюнка — Glyph.

Устанавіць значэнне bsDialog для ўласцівасці BorderStyle формы. У гэтым выпадку мяжа формы не дазволіць мяняць яе памеры.

Коды працэдур апрацоўшчыкаў прыведзены ў прыкладзе 5.25.

Для кожнай кнопкі на форме трэба стварыць апрацоўшчык падзеі OnClick.

Апрацоўшчыкі падзей для ўсіх лічбавых кнопак будуць ідэнтычныя.

Апрацоўшчыкі для кнопак арыфметычных дзеянняў будуць адрознівацца толькі значэннем запамінальнай аперацыі.

Асноўныя вылічэнні адбываюцца ў апрацоўшчыка кнопкі «=». Пераўтворым у лік n2 значэнне поля Edit і выконваем арыфметычную аперацыю ў залежнасці ад значэння пераменнай znak. Пасля гэтага абнуляем пераменныя.

У апрацоўшчыка кнопкі «С» (от англ. clear — ачысціць) адбываецца абнуленне пераменных і ачыстка поля Edit.

Акно дадатку падчас работы паказана ў прыкладзе 5.26.

Створаны калькулятар мае вялікую колькасць абмежаванняў у сваёй працы, паколькі разлічаны на вылічэнні толькі з натуральнымі лікамі.

Прыклад 5.24. Форма на этапе канструявання:

Прыклад 5.25. Апрацоўшчыкі падзей:

//апісанне глабальных пераменных

var n1, n2: integer;

    znak: char;

 

procedure TForm1.BitBtn10Click(Sender: TObject);

begin

  //прыпісванне лічбы да ліку

  Edit1.Text := Edit1.Text + '0';

end;

 

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

  //прыпісванне лічбы да ліку

  Edit1.Text := Edit1.Text + '1';

end;

Для астатніх лічбавых кнопак трэба змяніць толькі '1' на адпаведную лічбу.

procedure TForm1.BitBtn11Click(Sender: TObject);

begin

  n1 := StrToInt(Edit1.Text);

  //запамінанне знака аперацыі

  znak := '+';

  Edit1.Clear;

end;

Для астатніх кнопак са знакамі арыфметычных дзеянняў трэба змяніць толькі '+' на адпаведны знак.

procedure TForm1.BitBtn15Click(Sender: TObject);

begin

  n2 := StrToInt(Edit1.Text);

  case znak of

    '+': Edit1.Text := IntToStr(n1 + n2);

    '-': Edit1.Text := IntToStr(n1 - n2);

    '*': Edit1.Text := IntToStr(n1 * n2);

    '/': Edit1.Text := IntToStr(n1 div n2);

  end;

  n1 := 0;

  n2 := 0;

  znak := ' ';

end;

 

procedure TForm1.BitBtn16Click(Sender: TObject);

begin

  Edit1.Clear;

  n1 := 0;

  n2 := 0;

   znak :=' ';

end;

Прыклад 5.26. Дадатак у час працы: