3

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

(Windows APIに精通している人は、TCustomForm.ShowingChanged(Delphi 2007のForms.pas行5503)のShowWindow呼び出しにトレースしました。これにより、WM_SIZE少なくとも、他のウィンドウがない新しいウィンドウに対して...がトリガーされます。プロパティが設定されています。ShowWindowが常に起動することが文書化されているのを見たことがないWM_SIZEので、これを信頼できるかどうかわかりません。)

だから:最初に表示されたときに常にOnResizeを起動するTFormに頼ることはできますか?または、ウィンドウが最初に表示される前にOnResizeが起動しない状況(ウィンドウのサイズが変更できない場合、Positionプロパティに特定の値がある場合など)がありますか?

4

1 に答える 1

6

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

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

于 2009-08-06T15:00:51.523 に答える