「ストップウォッチ」アプリケーション作成(Android,Windows) ~Delphiソースコード集
1.Delphiを起動
Delphiを起動して新規FMXプロジェクトを作成し、ターゲットプラットフォームをAndroidに設定します。フォームの幅をドラッグして狭くします。
フォームにTScaledLayoutをドラッグ&ドロップし、Alignプロパティを「Fit」にします。
ScaledLayout1に、TLabelをドラッグ&ドロップし、Alignプロパティを「Top」にし、StyledSettings.Sizeプロパティを「False」にし、TextSettings.Font.Sizeプロパティを「24」にします。
ScaledLayout1に、TButtonを2つ、ドラッグ&ドロップします。
プロジェクトとユニットを保存します。
2.権限設定
権限は、一切不要です。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.Layouts, System.Diagnostics;
type
TStopWatchThread=class(TThread)
private
FStopWatch : TStopWatch;
FLabel:TLabel;
protected
procedure Execute; override;
public
constructor Create(l:TLabel);
procedure Start();
procedure Reset();
procedure Stop();
function IsStop():boolean;
end;
TForm1 = class(TForm)
ScaledLayout1: TScaledLayout;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ private 宣言 }
swh:TStopWatchThread;
public
{ public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
begin
if swh.IsStop then
begin
swh.Start;
Button1.Text:='停止';
end
else
begin
swh.Stop;
Button1.Text:='再開';
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
swh.Stop;
swh.Reset;
Button1.Text:='開始';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.Text:='開始';
Button2.Text:='リセット';
Label1.Text:='';
swh:=TStopWatchThread.Create(Label1);
end;
{ TStopWatchThread }
constructor TStopWatchThread.Create(l: TLabel);
begin
inherited Create(false);
FreeOnTerminate := True;
FLabel:=l;
FStopWatch:=TStopwatch.Create;
end;
procedure TStopWatchThread.Execute;
var dt:TDateTime;
h,m,s,ms:word;
begin
inherited;
while not Terminated do
begin
dt:=FStopWatch.ElapsedMilliseconds/24/60/60/1000;
DecodeTime(dt,h,m,s,ms);
Synchronize(
procedure
begin
FLabel.Text:= Format('%4d時%2.2d分%2.2d秒.%3.3d', [h,m,s,ms]);
end
);
Sleep(1);
end;
end;
function TStopWatchThread.IsStop: boolean;
begin
result:=not FStopWatch.IsRunning;
end;
procedure TStopWatchThread.Reset;
begin
FStopWatch.Reset;
end;
procedure TStopWatchThread.Start;
begin
FStopWatch.Start;
end;
procedure TStopWatchThread.Stop;
begin
FStopWatch.Stop;
end;
end.
4.実行する
デバッガを使わず実行(Shift+Ctrl+F9)などで実行します。「開始」を押すとストップウォッチが開始されます。
「停止」を押すと一時停止します。
「再開」を押すとストップウォッチが再開します。
「リセット」を押すとストップウォッチがリセットされ停止します。
もちろんWindows用にコンパイルするとWindowsでも動作します。