イベントプロシージャにある引数Senderとは ~Delphiソースコード集
onClick等のイベントプロシージャにあるTObject型の引数Senderはそのイベントを発生させたオブジェクトです。
具体的にソースコードを記述して確認してみます。
画面設計
Delphi IDEを起動し、「ファイル」⇒「Windows VCLアプリケーション -Delphi」をクリックしてプロジェクトと初期フォームを作成します。
フォーム上に「TButton」を2つドラッグ&ドロップします。
ボタン「Button1」クリック時のソースコードを記述する
「Button1」をクリックして選択します。
左下ペインの「オブジェクト インスペクタ」の「イベント」タブをクリックします。
「OnClick」の右側の何もないところをダブルクリックします。
(Button1をクリックした時に実行するソースコードを記述する為のひな形が準備されます)
以下のようにソースコードを記述します。
procedure TForm1.Button1Click(Sender: TObject); begin //SenderがTButtonクラスかどうか判定 if Sender is TButton then begin //SenderをTButtonクラスにキャストして //Captionプロパティ(ボタンに表示されている文字)をダイアログ表示する ShowMessage( TButton(Sender).Caption ); end; end;
ボタン「Button2」クリック時に同じソースコードを割り当てる
キーボードの「F12」キーを押す、又はIDE下にある「デザイン」タブをクリックして、デザインモードに切り替えます。
「Button2」をクリックして選択します。
左下ペインの「オブジェクト インスペクタ」の「イベント」タブをクリックします。
「OnClick」の右側の何もないところの右にある「▼」ボタンをクリックします。
候補が出てきますので「Button1Click」をクリックします。
これにより「Button2」クリック時も、「Button1」クリック時も「Button1Click」プロシージャ(メソッド)が呼ばれるようになります。
実行する
IDEの実行ボタンをクリックして実行します。
「Button1」をクリックすると"Button1"が表示され、「Button2」をクリックすると"Button2"が表示されます。
よって、引数「Sender」はイベントを発生させたオブジェクトであることがわかります。