起動時に複数のフォームを表示するには


低血圧  2004-03-03 17:13:47  No: 7527  IP: 192.*.*.*

アプリ起動時に複数のフォームを表示する方法がわかりません。
しかもサブフォームをメインフォームより手前に表示したいのです。
方法をお知りの方、教えてください。
お願いします。

編集 削除
るるとん@K  2004-03-03 17:43:38  No: 7528  IP: 192.*.*.*

Visible=TrueでしかもStayOnTop

編集 削除
たかみちえ  URL  2004-03-03 18:46:09  No: 7529  IP: 192.*.*.*

"メインフォームより隣"ですよ、StayOnTopでは常に手前表示してしまいます。

  全面表示したいCreateParamsをオーバーライドし、
以下のように書いてみたらどうでしょうか?
procedure ModalForm.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.WndParent := Application.MainForm.Handle;
end;

編集 削除
たかみちえ  URL  2004-03-03 18:46:41  No: 7530  IP: 192.*.*.*

"隣"じゃない、"手前"(^^ゞ

編集 削除
るるとん@K  2004-03-03 20:58:22  No: 7531  IP: 192.*.*.*

起動画面でタイトルロゴを表示するならstayontopにしてタイマーのontimerでself.free;にすれば良い。
ツールウインドウでもstayontopでOK
起動時に何かを選択するダイアログを表示するならメインフォームのEnableをFalseダイアログのoncloseでTrueにすればOK

編集 削除
たかみちえ  URL  2004-03-03 21:07:53  No: 7532  IP: 192.*.*.*

> 起動画面でタイトルロゴを表示するならstayontopにして
  スプラッシュを常に手前にすると、起動処理中エラーが起こっ
たときに対処に困りますよ。まあ、スプラッシュにそれを表示するんならいいですが。
  それからフォームの解放にはReleaseをつかってください。Freeは使うべきではないとヘルプにあります。スプラッシュなら平気とも、言ってられませんからね。

編集 削除
低血圧  2004-03-04 09:10:27  No: 7533  IP: 192.*.*.*

皆さんありがとうございます。
サブフォームの事はわかりましたが、
起動時に複数のフォームを開くには
どうしたらいいでしょうか。
メインフォームは勝手に表示されるけど。
MainForm.formCreateのなかでshowかなにかで
呼び出せばいいのでしょうか。

編集 削除
Brock  2004-03-04 10:23:27  No: 7534  IP: 192.*.*.*

MainForm の FormCreate はフォームが生成された時に通ります。
フォームは順に生成されるので、FormCreate を通った時には、他のフォームはまだ生成されていない場合があります。
FormShow で処理をした方が安全だと思います。

編集 削除
たかみちえ  URL  2004-03-04 10:29:37  No: 7535  IP: 192.*.*.*

そのフォームがアプリケーション終了時までずっと表示するのならば、
プロジェクトオプションの"自動生成するフォーム"に追加して、
最初にShowするのがいいでしょう。

  一回しか表示しない、スプラッシュスクリーンのようなものだったら、
自動生成するフォームの一覧からはずし、コードで
SplashScreen := TSplashScreen.Create(Self); // 生成
SplashScreen.Show; // 表示
SplashScreen.Update; // 表示しただけでは描画されないので。更新
      { なにか時間の要りそうな処理 }
SplashScreen.Release; // フォームの解放

  というふうにすればいいです。
(上のような方法もできなくはないですが、非表示の時間もずっとフォームオブジェクトが存在するので、メモリの無駄です)

編集 削除
るるとん@K  2004-03-04 12:20:40  No: 7536  IP: 192.*.*.*

Visible=Trueで良いのでは?

編集 削除