- ベストアンサー
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を表示する、という処理を共通化させるにはどうすれば良いでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
C++Builder は長いこと使ってないので間違ってたらすみません。 >pnl = TPanel(Sender); // (1) TPanel(Sender) だとTPanelのコンストラクタを呼び出すことになるので意味が違います。 おそらくやりたいことは pnl = dynamic_cast<TPanel *>(Sender); ではないでしょうか。
お礼
お礼ボタンで記載しませんでした。 本当にありがとうございました。
補足
おぉ!素晴らしい! ご教授いただいたソースに書き換えたら狙い通り動きました。 本当にありがとうございました。