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


低血圧  2004-03-04 02:13:47  No: 7527

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


るるとん@K  2004-03-04 02:43:38  No: 7528

Visible=TrueでしかもStayOnTop


たかみちえ  URL  2004-03-04 03:46:09  No: 7529

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

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


たかみちえ  URL  2004-03-04 03:46:41  No: 7530

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


るるとん@K  2004-03-04 05:58:22  No: 7531

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


たかみちえ  URL  2004-03-04 06:07:53  No: 7532

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


低血圧  2004-03-04 18:10:27  No: 7533

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


Brock  2004-03-04 19:23:27  No: 7534

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


たかみちえ  URL  2004-03-04 19:29:37  No: 7535

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

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

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


るるとん@K  2004-03-04 21:20:40  No: 7536

Visible=Trueで良いのでは?


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

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






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