转换事件处理程序的 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
事件。
我想要实现的是让一个事件处理程序读取被单击的 TImage
的 Name
。
据我所知,这可以通过 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;
}
我正在使用 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
事件。
我想要实现的是让一个事件处理程序读取被单击的 TImage
的 Name
。
据我所知,这可以通过 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;
}