動作確認
C++ Builder XE4
RAD Studio 10.2 Tokyo Update 2 (追記: 2017/12/27)
色々な処理ではSenderという引数を持つ。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
}
TButton, TEdit, TMemoなどの処理においてそのコンポーネント名を取得するにはSender.Nameではできなかった。
どうするか。
http://docwiki.embarcadero.com/Libraries/XE4/ja/Vcl.StdCtrls.TButton
によると、TButtonの継承関係は以下となる。
TObject > TPersistent > TComponent > ... > TCustomButton > TButton
Nameというプロパティで検索するとTComponentが出てくる。
http://docwiki.embarcadero.com/Libraries/XE4/ja/System.Classes.TComponent.Name
以上より、以下の実装でNameを取得できる。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TComponent *cmpPtr = (TComponent *)Sender;
ShowMessage(cmpPtr->Name);
}
void __fastcall TForm1::Edit1Click(TObject *Sender)
{
TComponent *cmpPtr = (TComponent *)Sender;
ShowMessage(cmpPtr->Name);
}
異なるコンポーネントの共通処理を実装する場合は、上記のようにTComponent*型にすればいい。