これはFAQに違いないと思いますが、グーグルはあまり役に立ちませんでした。
私は何をすることができますか-そしてしないかもしれません-でFormCreate()
?
フォームのすべての子コントロールが完全に作成され、アクセスできるようになっているのではないかと思います。
私が尋ねる理由は、私がFormCreate()
単純に構成されている古いプロジェクトに出くわしたからです。
Sleep(1000);
PostMessage(Handle, UM_PROGRAM_START, 0, 0);
「少し待って」、「落ち着いたら」初期化したいようです...
確かに当時は理由があったのですが(?)、啓発的なコメントがなかったので、なぜそれが必要だと感じたのか思い出せません。
誰かが、自分が何をすることができるかについての制限を述べたり、述べているリンクを参照したりできますFormCreate()
か?
[更新]DavidHeffermanは、「アプリケーションがメッセージのポンピングを開始します。これは、.dprファイルでApplication.Runを呼び出すと発生します」と書いたときに解決策を見つけたと思います。
私は単一のフォームについては心配していなかったと思います。たとえば、私のメインフォームは、起動時にconfig / optionsフォームを使用して何かを実行したいので、明らかに、作成されるまで待機する必要があります。
これが私のプロジェクトの1つからの典型的な.DPRです...
Application.Initialize;
Application.CreateForm(TGlobal, Global);
Application.MainFormOnTaskbar := True;
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TLoginForm, LoginForm);
Application.CreateForm(TConfigurationForm, ConfigurationForm);
//[snip] a bunch of other forms ...
Application.Run();
mainForm.CreateForm()
したがって、すべてのフォームが作成されて初期化されるまで処理されないをアプリ自体に送信することは理にかなっていUM_APPLICATION_START
ます(または、メッセージが呼び出された後に.DPRからトリガーされるfn()を呼び出すこともできますApplication.Run()
;しかし私はそれがより明白であるため、メッセージを好みます-私はめったに私の.DPRファイルを見ません)。