トップへ(mam-mam.net/)

イベントプロシージャにある引数Senderとは ~Delphiソースコード集

検索:

イベントプロシージャにある引数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」はイベントを発生させたオブジェクトであることがわかります。