Преобразовать параметр Sender обработчика событий, чтобы прочитать имя элемента управления? - PullRequest
0 голосов
/ 21 февраля 2020

Я пишу приложение Form, используя Borland C ++ Builder 6.0. Я установил 2 TImage элемента управления и сгенерировал обработчик события OnClick, как показано ниже:

void __fastcall TForm1::Image1Click(TObject *Sender)
{
   AnsiString imageName;

   TImage *image;

   // How can I get the image name via the *Sender ?
   // How can I convert *Sender into TImage
   image = (TComponent)*Sender;

   imageName = image->Name;
}

Я назначил одно и то же событие OnClick на оба моих элемента управления TImage.

Чего я хочу добиться, так это иметь один обработчик событий, который читает Name из TImage, по которому щелкают.

Насколько я знаю, это можно сделать с помощью TObject *Sender параметр, но я не могу понять, как я могу преобразовать Sender в TImage.

1 Ответ

1 голос
/ 22 февраля 2020

Вы на правильном пути, что достаточно простого приведения типов, но ваш синтаксис неверен. Попробуйте вместо этого:

void __fastcall TForm1::Image1Click(TObject *Sender)
{
   TImage *image = (TImage*)Sender;
   // alternatively:
   // TImage *image = static_cast<TImage*>(Sender);

   AnsiString imageName = image->Name;
}
...