イマジオムの高木です。 皆さん、お久しぶりです。
OE さん:
> フォームのあるWindowsを作っています。メインフォームから
> サブフォームを、ShowModalで生成して表示させています。
>
> ↓こんな感じです。
> //メインフォーム内のコード
> fm_Test := Tfm_Test.Create(self);
> try
> fm_Test.Caption := 'Test';
> fm_Test.ShowModal;
> finally
> fm_Test.Free;
> end;
>
> この時、サブフォームのFormShowのイベントにて、ある計算を行い、
> 結果によっては、サブフォーム自らをすぐに閉じたいです。
>
> しかし、仮に単純に下記の通りにしても、閉じてくれないことが、
> わかりました。
> //サブフォーム内のコード
> procedure Tfm_Test.FormShow(Sender: TObject);
> begin
> close;
> end;
>
> どうすれば、サブフォーム内のコードで自身を閉じることが
> できるでしょうか。
何人かの方から PostMessage(WM_CLOSE) を使う方法が
示されていますので、ちょっと別のアプローチをお話しします。
まず OnShow イベントで表示可否を判定されていますが、
OnCreate イベントで判定して「否」の場合には Abort() を
呼び出す方法ではいけませんか? この方法だと、一瞬
サブフォームが表示されるのを防ぐことができます。
またサブフォームを一瞬させないといけない(OnShow
以後に判定しなければならない)事情があるのであれば、
OnPaint イベントで表示の可否を判定し、閉じる方法も
使えます。 この方法だと直接 Windows APIを使わずに
すみます。
――――――――――――――――――――――――――――――――――――
株式会社イマジオム 代表取締役 高木太郎
〒316-0024 茨城県 日立市 水木町 1-11-10
電話:0294-28-0147
ファクシミリ:0294-28-0148
電子メール:
tarou_...@imageom.co.jp
ホームページ:
http://www.imageom.co.jp/
MLホームページ:
http://www.freeml.com/delphi-users
----------------------------------------------------------------------
デザインから、場所から、日時から予約できる
ネイル予約サービス「NAIL+(ネイルプラス)」
http://ad.freeml.com/cgi-bin/sa.cgi?id=muWBj
予約後にレビューすると3,000円キャッシュバック実施中♪
詳しくは△▲URL▲△を今すぐチェック!
------------------------------------------------------[freeml byGMO]--