16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"スプラッシュウィンドウ"
この発言に対し以下のコメントが寄せられています
#00995 凛 さん RE:スプラッシュウィンドウ
#00996 凛 さん RE:スプラッシュウィンドウ
スプラッシュウィンドウのサンプル
他にもいろいろやり方はあると思いますが、私はこのようにしております。
全てディフォルトの名前を使ったと仮定しての例です。
Form1がメインウィンドウでForm2がスプラッシュとします。
1. Form1とForm2を作ってForm2はDelphiのメインメニューの
プロジェクト/オプション/フォーム で
Form2を自動作成の対象から選択可能なフォームに移動しておきます。
(もしくはproject1.dprを開いて
Application.CreateForm(TForm2, Form2);の一行をコメントアウトする)
2. Unit1のimplemenationの下にuses unit2 を加える
implementation
uses //☆追加
unit2; //☆追加
3.TForm1.onCreateのイベントハンドラを以下のように記述する
procedure TForm1.FormCreate(Sender: TObject);
var
f2:TForm2;
begin
f2:=TForm2.Create(self);
f2.show;
sleep(1000);//もしくは時間がかかる処理
f2.free;
end;
■多くの人は無意味なスプラッシュを嫌いますので特別な理由がない限りスプラ
ッシュを使うのは控えた方がよいでしょう。
■上記のサンプルはTForm1のインスタンスが一つしか作られないし、
TForm1.Createでいろいろな初期化をしているので時間がかかる、、という時に
妥当な処理です。TForm1のインスタンスがたくさん生成されるような状況では
TForm1.CreateでなスプラッシュをCraeteするのは調子が悪いので
initializationを使って以下のようにするのが吉かもしれません。
procedure init;//自分で書く
var
f2:TForm2;
begin
f2:=TForm2.Create(Application);
f2.show;
sleep(1000);//もしくはApplication共通の初期化
f2.free;
end;
initialization
init;
end.
または プロジェクトファイル(*.dpr)を以下のようにしてもいいのではないで
しょうか。
program Project1;
uses
Forms,
windows, //☆sleepのために追加
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
var f2:TForm2; //☆追加
{$R *.RES}
begin
Application.Initialize;
//ここから
f2:=TForm2.Create(Application);
f2.show;
sleep(1000);
f2.free;
//ここまで追加
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
☆☆☆ かわいいコードにゃ旅をさせよう いざサンプル蔵へ!! ☆☆☆
99/12/26(日) 14:39 凛(MXB01744)
Original document by 凛 氏 ID:(MXB01744)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|