Преобразовать параметр Sender обработчика событий, чтобы прочитать имя элемента управления?

Я пишу приложение формы, используя 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.


person Origamer7    schedule 20.02.2020    source источник


Ответы (1)


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

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

   AnsiString imageName = image->Name;
}
person Remy Lebeau    schedule 21.02.2020