As in the title, the subject is based on RAD Studio 11.0, which simplifies the Windows calculator compiled by XE in ancient times. The addition, subtraction, multiplication and division of the four arithmetic operations is recompiled with FireMonkey. The Android 64bit package has been tested to run normally on the Blue Butterfly BlueStacks virtual machine and Huawei Mate 40 Pro. Not much to say, the code...
1. New construction
Delphi 11.0 -> File -> New -> Multi-Device Application - Delphi
2. Drag and drop controls:
20 Buttons, 1 Label, 1 Edit, 1 Timer
3. Complete source code
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.Controls.Presentation, FMX.Edit;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
Button16: TButton;
Button17: TButton;
Button18: TButton;
Button19: TButton;
Button20: TButton;
Label1: TLabel;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button20Click(Sender: TObject);
procedure Button17Click(Sender: TObject);
procedure Button19Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
num: array[1..20] of Char; // 计算器
i: Integer; //
a, b, s: Extended; //
z: Char; //
end;
var
Form1: TForm1;
time1: TTime; //
num: array[1..20] of Char; // 计算器
i: Integer; //
a, b, s: Extended; //
z: Char; //
implementation
{$R *.fmx}
{$R *.LgXhdpiPh.fmx ANDROID}
procedure TForm1.Button10Click(Sender: TObject);
begin
if i = 1 then
Edit1.Text := '';
Edit1.Text := Edit1.Text + '5';
num[i] := '5';
i := i + 1;
end;
procedure TForm1.Button11Click(Sender: TObject);
begin
if i = 1 then
Edit1.Text := '';
Edit1.Text := Edit1.Text + '6';
num[i] := '6';
i := i + 1;
end;
procedure TForm1.Button12Click(Sender: TObject);
begin
a := strtofloat(Edit1.Text);
z := '*';
i := 1;
end;
procedure TForm1.Button13Click(Sender: TObject);
begin
if i = 1 then
Edit1.Text := '';
Edit1.Text := Edit1.Text + '1';
num[i] := '1';
i := i + 1;
end;
procedure TForm1.Button14Click(Sender: TObject);
begin
if i = 1 then
Edit1.Text := '';
Edit1.Text := Edit1.Text + '2';
num[i] := '2';
i := i + 1;
end;
procedure TForm1.Button15Click(Sender: TObject);
begin
if i = 1 then
Edit1.Text := '';
Edit1.Text := Edit1.Text + '3';
num[i] := '3';
i := i + 1;
end;
procedure TForm1.Button16Click(Sender: TObject);
begin
a := strtofloat(Edit1.Text);
z := '/';
i := 1;
end;
procedure TForm1.Button17Click(Sender: TObject);
begin
if i = 1 then
Edit1.Text := '';
Edit1.Text := Edit1.Text + '0';
num[i] := '0';
i := i + 1;
end;
procedure TForm1.Button18Click(Sender: TObject);
begin
Edit1.Text := Edit1.Text + '.';
end;
procedure TForm1.Button19Click(Sender: TObject);
var
X: Extended;
begin
X := strtofloat(Edit1.Text);
X := -X;
Edit1.Text := FloatToStr(X);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
j: Integer;
begin
Edit1.Text := '';
i := i - 1;
for j := 1 to i - 1 do
Edit1.Text := Edit1.Text + num[j];
end;
procedure TForm1.Button20Click(Sender: TObject);
var
j: Integer;
begin
b := strtofloat(Edit1.Text);
case z of
'+':
s := a + b;
'-':
s := a - b;
'*':
s := a * b;
'/':
s := a / b;
end;
Edit1.Text := FloatToStr(s);
i := 1;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text := '';
i := 1;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
a := strtofloat(Edit1.Text);
z := '+';
i := 1;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
if i = 1 then
Edit1.Text := '';
Edit1.Text := Edit1.Text + '7';
num[i] := '7';
i := i + 1;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
if i = 1 then
Edit1.Text := '';
Edit1.Text := Edit1.Text + '8';
num[i] := '8';
i := i + 1;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
if i = 1 then
Edit1.Text := '';
Edit1.Text := Edit1.Text + '9';
num[i] := '9';
i := i + 1;
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
a := strtofloat(Edit1.Text);
z := '-';
i := 1;
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
if i = 1 then
Edit1.Text := '';
Edit1.Text := Edit1.Text + '4';
num[i] := '4';
i := i + 1;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Text := '当前系统时间:' + DateTimeToStr(now);
end;
end.
4. Run the screenshot
Enjoy it !
Supporting Android SDK, NDK, AdoptopenJDK download package: https://pan.baidu.com/s/1aJeTQTKSzICDqMl_XDGifg?pwd=2023
The default configuration path is as follows:
01-SDK-64bit&32bit
02-NDK-64bit
03-NDK-32bit
04-JDK-64bit&32bit