実行時にメインフォームを隠す
タスクトレイにアイコンを表示して常駐するタイプのアプリケーション等、メインフォームが表示されては困る場合があります。
こういったアプリケーションを実現するために VCL には起動時にメインフォームが表示されないようにする仕組みがありました。
FireMonkey はどうかというと、更に柔軟な解決方法が用意されています。
VCL の場合
VCL では、TApplication に ShowMainForm プロパティがあり、これに False を入れると MainForm の表示を阻止できました。
program Project1;
uses
Vcl.Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.ShowMainForm := False; // ←コレ!
Application.Run;
end.
FireMonkey の場合
FireMonkey の TApplication は VCL と違い ShowMainForm プロパティはありません。
では、どうするかというと TCommonCustomForm.CanShow メソッドを override して実現します。
具体的には
type
TForm1 = class(TForm)
public
function CanShow: Boolean; override; // override
end;
implementation
function TForm1.CanShow: Boolean;
begin
Result := False;
end;
と、こんな感じです。
MainForm 以外の Form ももちろん同じやり方で非表示化できます。
ただし、上の例のように必ず False を返すようにすると絶対に表示されないので、本来はフラグで管理するといいと思います(初回だけ非表示とか)。
まとめ
CanShow や OnClose を使うと Form のライフタイムとは別に Visible だけ変化できます。
お試しあれ
…え? FireMonkey で TaskTray にアイコンが入れられないって?
これについては、また今度!