|
DelphiXE3 [FMX] 時計アプリケーション1 2014/07/28 |
さて、FireMonkey(FMX)について、おおよそ基本的なところは見てきた(つもりです)ので、これから、たわいもないアプリケーションを幾つか作っていこうと思います。そうすればそのうち、FireMonkeyにも慣れてくるでしょう。おそらくきっと。
今回は、たわいもないアプリケーション・その1として、簡単な時計アプリケーションを作ってみます。
時計アプリケーションは、現在の時間を表示するプログラムですが、現在の日時を取得するには、Now、Date、Time、というルーチンがありますが、時間だけ必要ですので、Timeを使おう・・・と思ったら、ヘルプによると、
メモ: Time は、同名の Xlib 関数と衝突します。 クロスプラットフォーム コード(MAC OS)では、GetTime を使用してください。 |
とありますので、GetTime を使う事にします。
また、日時を文字列に変換する際には、グローバル変数 LongTimeFormat が利用される事もありましたが、この非推奨のグローバル変数は廃止となったため、利用する事が出来ませんので、注意が必要です。
ここでは単純に、現在の時間をデジタル式に、文字列として画面に表示することを考えますので、
のようにレイアウトして、
画面をリサイズしたら文字の大きさを変える事とし、画面の位置・大きさは Iniファイルとして保存・呼び出しするようにしておきます。
時計は、24時間制ではなく、12時間制(午前(AM)・午後(PM))で表示していますが、時計はその方が分かりやすいから、という程度の事です。24時間制の方が良いという人は、それ用にプログラムを編集すれば良いでしょう。
タイマー(Timer)で 0.5秒毎に、内容を更新させています。
1秒毎に表示するのだから1秒毎でいいのではないか?と思われるかもしれませんが、誤差、動作タイミングによって、1秒以上経過してから更新される可能性もあります。そうなると、時計表示がいきなり2秒進んだり、という事が起きる可能性もあります。
では、0.5秒なら大丈夫なのか? というと、実は分かりません。ですが、0.1秒毎にすると、他のアプリケーションの動作の邪魔になるかもしれませんし、まぁ、ほどほどに、という程度の意味で 0.5秒としているだけです。都合が悪ければ、プログラムを編集すれば良いでしょう。
時間表示は、
procedure TForm1.TimeDisp ;
var
d : TDateTime;
s : string;
begin
d := GetTime ;
s := FormatDateTime('AM/PMhh:nn:ss',d);
Label1.Text := s.Substring(2);
Label2.Text := s.Substring(0,2);
end; |
のようにしています。
まぁ、見れば分かるって程度のプログラムコードなので、説明する必要も無いでしょう。
さて、Windowsアプリケーションでは、EXEファイル単体だけで実行出来ます。が、MacOSX については私は全く詳しくありませんのでよく分かりません。通常ならば、「Apple デベロッパ プログラム」に登録をして、「Mac App Store」で配布をしてもらう、というような事をされるのでしょうけれども、私自身は、それをするつもりはありません。(※しなければならない、という決まりは無い様子ですので) また、通常は、pkgファイルで配布されるのでしょうけれども、作り方がよく分かりませんので、それもしていません。配置イメージをそのまま zip 圧縮をして、それを公開する事にします。zip ファイルを解答(展開)すると、Finder で Delphiアイコンのついたアプリケーションが見えますから、それをダブルクリックすれば、アプリケーション実行出来ます(※Snow Leopard、Lion については大丈夫だと思われますがその他のバージョンについては不明です)。
アイコンは、DelphiXE3 の提供するアイコンをそのまま使っています。
正直、1024×1024のような巨大なアイコンが何故必要なのか、Mac使いではない私にとってはさっぱり訳が分からないのですが、まぁ当面、アイコンを描く予定はありません。
MacOSXアプリケーションの作成、「Mac App Store」での配布については、DelphiXE3 のヘルプ「Mac OS X のアプリケーション開発」等に記載されていますので、そちらを参照して下さい。
|
|
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Dehi入門編
>Delphi2010
>DelphiXE3
▲2014/07/25
2014/07/28
▼2014/08/04
シェアウェア
Script!World
データベース
|