2009-08-06 15 views
3

新しいDelphiフォームを作成し、そのOnResizeイベントをフックしてアプリケーションを実行すると、ウィンドウが表示される前にOnResizeが起動されます。私が知らないことは、これがいつもどんな窓のために起こるかということです。Delphiフォームは、表示時に常にOnResizeを起動しますか?

(Windows APIをよく知っている人は、TCustomForm.ShowingChanged(Delphi 2007のForms.pas行5503)のShowWindow呼び出しにトレースしています。これは明らかにWM_SIZEをトリガーします...少なくともShowWindowは常にWM_SIZEを発生させることを証明していないので、私はこれに数えることができるかどうかわかりません)

So:私はTForm 常に発射OnResizeが最初に表示されたら?状況があります(ウインドウのサイズを変更できない場合や、Positionプロパティに特定の値などが含まれているなど)場合は、ではなく、が最初に表示されます。

答えて

6

いいえ、このイベントは、BorderStyleなどの状況によっては、フォームが表示されても必ず発生するとは限りません。たとえば、bsSingleの起動時に起動しますが、bsDialogでは起動しません。

テストは簡単です。メインフォームのOnResizeイベントにロギングコードを追加し、BorderStyleを変更してアプリケーションを実行してください。

+0

可能性のあるすべてのプロパティの組み合わせをテストする必要があると思いました。私は正直言って、非OnResizeのケースを見つけるのは簡単ではないと思いました。しかし、答えを知って良いです。ありがとう! –

関連する問題