掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
複数画面を同時に閉じた後に、特定の画面を表示するには? (ID:8413)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
なんどもすみません。 うえの回答を撤回します。 この質問の難しさがだんだん分かってきました。上の回答では Release を 実行すると OnClose イベントが呼ばれないことを利用していますが、最初に クロースしたフォームは、Free されないで残りますね。質問では、どちらも Free しないで Close だけを行いたいようですから、上の回答は不十分です。 Release ではなく Hide メソッドでも OnClose イベントが呼ばれませんね。 Unit1.pas の部分だけ、以下のように訂正します。 procedure TForm1.AllClose(Sender:TForm); var i:integer; begin for i := 0 to Screen.CustomFormCount-1 do if Screen.CustomForms[i] is TForm1 then Screen.CustomForms[i].Show else if not (Screen.CustomForms[i] = Sender) then Screen.CustomForms[i].Hide; end; procedure TForm1.Button1Click(Sender: TObject); begin if not Assigned(Form2) then Form2 := TForm2.Create(Application); Form2.Show; if not Assigned(Form3) then Form3 := TForm3.Create(Application); Form3.Show; Self.Hide; end; Unit2.pas と Unit3.pas の変更はありません。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.