掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
自身を含む複数フォームの生成と破棄 (ID:22965)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
サンプルありがとうございます。 動かしてみましたが、こちらが考えているものとは少し違うようです サンプルでいうところのメインフォームが無い状態で Form2からFrom2と消してForm3を呼んだり、その逆を行うイメージです。 複数フォームを管理する親フォームと子となる複数のフォームで 構成出来ないか考えていますが 「自身が生成したフォームが閉じられたかどうかの判定」 という簡単な所でつまづきました。 Formを2個作ってForm1を親、Form2を子とし下記のようなのを作成 Form2のイベントを監視すればうまくいくとおもいきや OnDestroyは発生しない。(Override用?) OnCloseは発生するが、この時点ではまだForm2は存在するので 生成すると不具合が発生。 下記方法だとForm2の破棄後に発生するイベントが 見つかれば解決しそうなんですけど --------------------------------------------------------- TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private 宣言 } FForm2 : TForm2; // 追加 FReset: Boolean; // True:ならForm2を破棄して生成 procedure OnSubFormClose(Sender: TObject; var Action: TCloseAction); procedure OnSubFormDestroy(Sender: TObject); public { Public 宣言 } property Reset : Boolean read FReset write FReset; end; --------------------------------------------------------- procedure TForm1.FormCreate(Sender: TObject); begin Application.ShowMainForm := False; // メインフォームを非表示にする FForm2 := TForm2.Create(Self); FForm2.OnClose := OnSubFormClose; FForm2.OnDestroy := OnSubFormDestroy; FForm2.Show; end; --------------------------------------------------------- procedure TForm1.OnSubFormDestroy(Sender: TObject); begin if FReset then begin FReset := False; //FForm2.Free; FForm2 := nil; FForm2 := TForm2.Create(Self); FForm2.OnClose := OnSubFormClose; FForm2.OnDestroy := OnSubFormDestroy; FForm2.Show; end else begin Application.Terminate; end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.