4

アプリケーションを非表示のメイン フォームで起動しようとしましたが、うまくいきません。それはコンパイルされますが、実行すると実行時エラーが発生します。タイマーを使用して 1 ミリ秒に設定し、Application.MainForm.Hide非表示にすると点滅しますが、それが発生したくありません

program Project1;
uses
  FMX.Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.MainForm.Visible := false;
  Form1.Visible:=false;
  Application.Run;
end.
4

2 に答える 2

6

FireMonkeyアプリケーションでは、自動作成されたフォーム(作成されたもの)とMainFormプロパティがApplication.Runメソッドに割り当てられます。MainFormしたがって、プロパティとform1変数がnilであるため、アクセス違反が発生します。

RealCreateFormsこのようなプロパティにアクセスするには、最初にメソッドを実行する必要があります

begin
  Application.Initialize;
  Application.CreateForm(TForm2, Form1);
  Application.RealCreateForms;
  //Application.MainForm.Left:=-Application.MainForm.Width;
  Application.MainForm.Visible:=False;
  Application.Run;
end.
于 2013-01-19T15:17:58.950 に答える
0

はるかに簡単な方法 - CanShow をオーバーライドします。

type
  TfrmMain = class(TForm)
  public
    function CanShow: Boolean; override;
  end;

...

function TfrmMain.CanShow: Boolean;
begin
  Result := False; // Or return True when it's OK to show
end;
于 2019-05-05T01:40:27.577 に答える