FormCreateするには?

解決


???  2007-11-10 01:20:05  No: 28364  IP: 192.*.*.*

typeの中に、procedure FormCreate(Sender: TObject);と書き、implementationの下にprocedure TForm1.FormCreate(Sender: TObject);と書き、設定内容を記述しても、コンパイルしたときに反映されていません。
なぜでしょうか?

編集 削除
igy  2007-11-10 01:28:09  No: 28365  IP: 192.*.*.*

オブジェクトインスペクタで、「Form1: TForm1」が選択されている状態で、
「イベント」タブのOnCreateの右の欄でダブルクリックし、自動的に
ソースコードのほうに、

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

ができるので、そこに、必要なコードを書くのでは、だめですか?

編集 削除
???  2007-11-10 01:43:43  No: 28366  IP: 192.*.*.*

igy様ありがとうございます。
思うようにできました。
しかし、記述するのと、ダブルクリックで自動的に記述されるのでは、
なぜ、違いがでるのですか?

編集 削除
えっとね  2007-11-10 06:55:21  No: 28367  IP: 192.*.*.*

イベントが設定されていないからですよ

編集 削除
えっとね2  2007-11-10 08:14:53  No: 28368  IP: 192.*.*.*

ダブルクリックをすると自動的に

typeの中に、procedure FormCreate(Sender: TObject);

implementationの下にprocedure TForm1.FormCreate(Sender: TObject);

が設定され尚且つイベントが設定されるのですよ。

FormCreate に Button1Click を設定すれば

FormCreate時にButton1Click が実行されてしまいますよ

編集 削除
Mr.XRAY  URL  2007-11-10 13:23:52  No: 28369  IP: 192.*.*.*

変な名前の「???」さん,
記事(説明)を書いてみました.
参考になれば幸いです.

http://homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/UltraIntro01.htm

編集 削除
Mr.XRAY  URL  2007-11-10 14:36:59  No: 28370  IP: 192.*.*.*

>ダブルクリックで自動的に記述されるのでは、

[オブジェクト・インスペクタ]で作成したことが重要なのです.
プロシージャーの名前が FormCreate  だからFormのCreateの時実行される
わけではありません.
名前は任意です.[オブジェクト・インスペクタ]で編集可能です.

編集 削除
うんと  2007-11-11 01:22:27  No: 28371  IP: 192.*.*.*

>[オブジェクト・インスペクタ]で作成したことが重要なのです.

追記すると、IDE が *.dfm ファイルで該当イベントに代入する式を書き入れ、
それを見てコンパイラが代入するコードを生成し、実行時にオブジェクトを
生成してから実際にイベントにセットされます。つまり、オブジェクトインスペクタ
をつかってイベントハンドラを生成したときは、IDE が裏で関連づけをおこなって
くれているんですね。

*.dfm の内容をしることは、だから重要です。いろいろなコンポを置いてみると
プロパティーの設定がデフォルトと違った場合は、このファイルに記録されています。

編集 削除
???  2007-11-14 23:59:32  No: 28372  IP: 192.*.*.*

多くの方からのアドバイスにより納得できました。
本当にありがとうございます。

編集 削除