メインメニューから呼び出した別のフォームが稼動されているかを判定する方法は?

解決


優子  2013-02-23 02:15:00  No: 43929

メインメニュー(Form1)から呼び出した別のフォーム(aaa)を以下の通り呼び出しています。

procedure TForm1.Button1Click(Sender: TObject);
begin
  Faaa :=TFaaa.Create(application);
  Faaa.Visible :=True;
end;

ここでフォームaaaが稼動中かの判定をしたい場合、aaaが未稼働だとエラーになってしまいます。

procedure TForm1.Button2Click(Sender: TObject);
begin
  if Faaa.Visible =True then
  begin  
    Showmessage('稼動中');
  end;
end;

どうしたらよいか教えて下さい。


take  2013-02-23 02:27:38  No: 43930

稼働というか生成されているか確認する方法はだめかな?

procedure TForm1.Button2Click(Sender: TObject);
begin
  if Faaa <> nil then
  begin  
    Showmessage('稼動中');
  end;
end;


ちひろ  2013-02-23 03:05:49  No: 43931

こんばんは。

やってることはtakeさんと同じです。
詳細にはこんな感じで同じようなことをやっています。
これがベストかどうかはわからないけど、参考になれば…

1.プロジェクト→ソース表示にて、
  Application.CreateForm(TForm2, Form2);  を消す

2.Unit1
  procedure TForm1.Button1Click(Sender: TObject);
  begin
    if Assigned(Form2) then Form2.Close;
    Form2 := TForm2.Create(Application);
    Form2.Show;
  end;
  
  procedure TForm1.Button2Click(Sender: TObject);
  begin
    if Form2 <> nil then
    begin
      Showmessage('稼動中');
    end;
  end;

3.Unit2
  procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
  begin
    Action := caFree;
    Form2  := nil;
  end;


D  2013-02-23 03:46:26  No: 43932

こんな感じかな。

function IsFormExists(AForm: TForm): Boolean;
var
  i: Integer;
begin
  Result := False;

  if (AForm <> nil) then 
  begin
    for i := 0 to Screen.FormCount-1 do 
    begin
      if (Screen.Forms[i] = AForm) then 
      begin
        Result := True;
        Exit;
      end;
    end;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if (IsFormExists(Faaa) and Faaa.Visible) then
  begin  
    Showmessage('稼動中');
  end;
end;


けど  2013-02-23 05:58:30  No: 43933

先日KHE00221さんが使われていたこれで良いのでは?
  if Assigned(Faaa) then ShowMessage('いるよ') else
    ShowMessage('いない');


優子  2013-02-24 00:11:09  No: 43934

みなさん、どうも有難う御座いました。解決しました(感謝です)


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加