7
3

More than 5 years have passed since last update.

[小ネタ] FireMonkey でメインフォームを非表示にする

Last updated at Posted at 2018-06-12

実行時にメインフォームを隠す

タスクトレイにアイコンを表示して常駐するタイプのアプリケーション等、メインフォームが表示されては困る場合があります。

こういったアプリケーションを実現するために 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 にアイコンが入れられないって?

tray.png

これについては、また今度!

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3