• ベストアンサー

C++BuilderでSenderを使うには

複数の同種のオブジェクトに対する処理を共通化させるためにはSenderを使えばよい、という話がありますが、 どうすれば良いのか分かりませんので質問します。 次のようなサンプルプログラムを作りました。 Form上に複数のパネルを配置し、パネルをクリックしたらそのパネルのCaptionに、 グローバル変数のtxt(char txt[100];)を表示する、という処理です。 対象となる全てのパネルのOnClickイベントに、Panel1Click関数を指定し、次のように記述しました。 void __fastcall TForm1::Panel1Click(TObject *Sender){ TPanel *pnl; pnl = TPanel(Sender); // (1) pnl->Caption = txt; } このソースでは(1)がコンパイルエラーとなります。 Captionにtxtを表示する、という処理を共通化させるにはどうすれば良いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • luka3
  • ベストアンサー率72% (424/583)
回答No.1

C++Builder は長いこと使ってないので間違ってたらすみません。 >pnl = TPanel(Sender); // (1) TPanel(Sender) だとTPanelのコンストラクタを呼び出すことになるので意味が違います。 おそらくやりたいことは pnl = dynamic_cast<TPanel *>(Sender); ではないでしょうか。

CLMN
質問者

お礼

お礼ボタンで記載しませんでした。 本当にありがとうございました。

CLMN
質問者

補足

おぉ!素晴らしい! ご教授いただいたソースに書き換えたら狙い通り動きました。 本当にありがとうございました。

関連するQ&A