typeの中に、procedure FormCreate(Sender: TObject);と書き、implementationの下にprocedure TForm1.FormCreate(Sender: TObject);と書き、設定内容を記述しても、コンパイルしたときに反映されていません。
なぜでしょうか?
オブジェクトインスペクタで、「Form1: TForm1」が選択されている状態で、
「イベント」タブのOnCreateの右の欄でダブルクリックし、自動的に
ソースコードのほうに、
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
ができるので、そこに、必要なコードを書くのでは、だめですか?
igy様ありがとうございます。
思うようにできました。
しかし、記述するのと、ダブルクリックで自動的に記述されるのでは、
なぜ、違いがでるのですか?
イベントが設定されていないからですよ
ダブルクリックをすると自動的に
typeの中に、procedure FormCreate(Sender: TObject);
implementationの下にprocedure TForm1.FormCreate(Sender: TObject);
が設定され尚且つイベントが設定されるのですよ。
FormCreate に Button1Click を設定すれば
FormCreate時にButton1Click が実行されてしまいますよ
変な名前の「???」さん,
記事(説明)を書いてみました.
参考になれば幸いです.
http://homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/UltraIntro01.htm
>ダブルクリックで自動的に記述されるのでは、
[オブジェクト・インスペクタ]で作成したことが重要なのです.
プロシージャーの名前が FormCreate だからFormのCreateの時実行される
わけではありません.
名前は任意です.[オブジェクト・インスペクタ]で編集可能です.
>[オブジェクト・インスペクタ]で作成したことが重要なのです.
追記すると、IDE が *.dfm ファイルで該当イベントに代入する式を書き入れ、
それを見てコンパイラが代入するコードを生成し、実行時にオブジェクトを
生成してから実際にイベントにセットされます。つまり、オブジェクトインスペクタ
をつかってイベントハンドラを生成したときは、IDE が裏で関連づけをおこなって
くれているんですね。
*.dfm の内容をしることは、だから重要です。いろいろなコンポを置いてみると
プロパティーの設定がデフォルトと違った場合は、このファイルに記録されています。
多くの方からのアドバイスにより納得できました。
本当にありがとうございます。
ツイート | ![]() |