FormCreateするには?

解決


???  2007-11-10 10:20:05  No: 28364

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


igy  2007-11-10 10:28:09  No: 28365

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

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

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


???  2007-11-10 10:43:43  No: 28366

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


えっとね  2007-11-10 15:55:21  No: 28367

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


えっとね2  2007-11-10 17:14:53  No: 28368

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

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

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

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

FormCreate に Button1Click を設定すれば

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


Mr.XRAY  URL  2007-11-10 22:23:52  No: 28369

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

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


Mr.XRAY  URL  2007-11-10 23:36:59  No: 28370

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

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


うんと  2007-11-11 10:22:27  No: 28371

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

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

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


???  2007-11-15 08:59:32  No: 28372

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加