转换事件处理程序的 Sender 参数以读取控件的名称?

Convert the Sender parameter of an event handler in order to read the control's Name?

我正在使用 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;
}

我在两个 TImage 控件上分配了相同的 OnClick 事件。

我想要实现的是让一个事件处理程序读取被单击的 TImageName

据我所知,这可以通过 TObject *Sender 参数来完成,但我不明白如何将 Sender 转换为 TImage

您走在正确的轨道上,一个简单的类型转换就足够了,但是您的语法是错误的。试试这个:

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

   AnsiString imageName = image->Name;
}