如何在Delphi中使用和OnClick事件获取动态创建的按钮的名称?

如何在Delphi中使用和OnClick事件获取动态创建的按钮的名称?,delphi,button,onclick,dynamically-generated,Delphi,Button,Onclick,Dynamically Generated,我需要帮助,以便在Delphi中使用和OnClick事件获取动态创建的按钮的名称 然后我想使用该按钮的名称并将其存储在全局变量中 这就是我目前的处境: procedure TMap.FormShow(Sender: TObject); var btnCache : TButton; begin btnCache := TButton.Create(imgAerial); with btnCache do begin onclick := ClickButton; end; proc

我需要帮助,以便在Delphi中使用和OnClick事件获取动态创建的按钮的名称

然后我想使用该按钮的名称并将其存储在全局变量中

这就是我目前的处境:

procedure TMap.FormShow(Sender: TObject);
var
btnCache : TButton;
begin
 btnCache := TButton.Create(imgAerial);
 with btnCache do
 begin
  onclick := ClickButton;
 end;

procedure TMap.ClickButton(Sender: TObject);
begin
//Code for getting the name of the button
end;   

通过将
Sender
强制转换为引入
name
的类型,可以检索按钮的名称。即
t组件

(Sender as TComponent).Name

不要期望此名称提供大量信息,因为您的代码没有为按钮指定名称。由于代码写在问题中,动态创建的按钮没有名称。

可以通过将
发送者
强制转换为引入
名称
的类型来检索按钮的名称。即
t组件

(Sender as TComponent).Name

不要期望此名称提供大量信息,因为您的代码没有为按钮指定名称。由于代码写在问题中,动态创建的按钮没有名称。

是否要用此名称引用控件?因为那是不可能的。您应该通过它的变量来引用它。只有通过IDE(自动创建)将名称放入表单中时,名称才具有任何意义。您不仅不指定名称,而且即使指定了名称,该名称也只是一个字符串。正如大卫在回答中提到的,不要指望这个名字有多大意义。如果要从其他地方访问此按钮,请在表单中声明变量
btnCache
,而不是在此私有过程中。为什么需要该名称?您知道,当调用
ClickButton
时,
Sender
就是被单击的按钮,因此只需使用
TButton
类型的局部变量,并使用类似
MyBtn:=(Sender as TButton)的类型转换为
Sender
的值。然后,您可以像往常一样在代码中使用
MyBtn
。如果您的代码依赖于按钮的字符串名称,则表明您的代码设计错误。是否要以此名称引用控件?因为那是不可能的。您应该通过它的变量来引用它。只有通过IDE(自动创建)将名称放入表单中时,名称才具有任何意义。您不仅不指定名称,而且即使指定了名称,该名称也只是一个字符串。正如大卫在回答中提到的,不要指望这个名字有多大意义。如果要从其他地方访问此按钮,请在表单中声明变量
btnCache
,而不是在此私有过程中。为什么需要该名称?您知道,当调用
ClickButton
时,
Sender
就是被单击的按钮,因此只需使用
TButton
类型的局部变量,并使用类似
MyBtn:=(Sender as TButton)的类型转换为
Sender
的值。然后,您可以像往常一样在代码中使用
MyBtn
。如果您的代码依赖于按钮的字符串名称,则说明您的代码设计错误。