项目场景:
提示:这里简述项目相关背景:
如题,题主基于RAD Studio 11.0,将远古时候XE编的windows计算器精简了下,加减乘除四则运算的部分用FireMonkey重新编译Android 64bit包,经测试在蓝蝶 BlueStacks虚拟机和华为 Mate 40 Pro运行正常,话不多说,上码…
解决方案:
提示:这里填写该问题的具体解决方案:
- 新建工程
Delphi 11.0 -> File -> New -> Multi-Device Application - Delphi
2. 拖放控件:
20个Button,1个Label,1个Edit、1个Timer
3. 完整源码
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.
- 运行截图
配套Android SDK、NDK、AdoptopenJDK下载包:https://pan.baidu.com/s/1aJeTQTKSzICDqMl_XDGifg?pwd=2023
默认配置路径如下:01-SDK-64bit&32bit
打开 Delphi 11 笔者使用版本为XE 11.3 ;sdk 22 | 20;jdk 8.0.22
点击 Tools–Options…
然后点击 Deployment–SDK Manager–Add…
这里如果配置64位就选 Android 64-bit,如果配置32位就选 Android 32-bit
点击 Select an SDK version–Add New…
有警告图标的就是有问题的项,需要手动更新一下,点击每一行后面的…,仿照选择对应的路径
最后,添加好SDK即可
额外,需要提醒大家,SDK版本有许多,最好添加匹配的Android版本对应的SDK,如图
同时,添加SDK版本的时候最好是先32位,然后64位,逐次添加SDK,NDK,JDK,如图
完成配置
到此,环境配置就好了,大家按F9即可打包apk文件导入Android移动设备安装,ღ( ´・ᴗ・` )~~