LoginSignup
0
1

More than 5 years have passed since last update.

c++ builder XE4, 10.2 Tokyo > TButton, TEdit, TxxxのNameを取得する > TComponent *型にしてName取得

Last updated at Posted at 2016-07-06
動作確認
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*型にすればいい。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1