Delphi 在Firemonkey中实现按钮点击

Delphi 在Firemonkey中实现按钮点击,delphi,firemonkey,Delphi,Firemonkey,我缺少TButton。请单击FireMonkeyTButton中的方法 在fire monkey的代码中,有没有办法触发click事件?如果没有此类事件,只需使用click方法启动分配给按钮的操作即可。好的,您只需编写: Button1.OnClick(Button1); 如果按钮上附加了操作,则可以使用 Button1.Action.Execute; 但这并不值得推荐。正确的方法是创建一个方法来完成这项工作。然后从OnClick事件处理程序或代码中要调用此操作的其他位置调用该方法。像这样:

我缺少
TButton。请单击FireMonkey
TButton
中的
方法


在fire monkey的代码中,有没有办法触发click事件?如果没有此类事件,只需使用click方法启动分配给按钮的操作即可。

好的,您只需编写:

Button1.OnClick(Button1);
如果按钮上附加了操作,则可以使用

Button1.Action.Execute;
但这并不值得推荐。正确的方法是创建一个方法来完成这项工作。然后从
OnClick
事件处理程序或代码中要调用此操作的其他位置调用该方法。像这样:

procedure TForm1.DoSomething;
begin
  // do whatever it is
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  DoSomething;
end;
然后,您可以在代码中的任何地方调用
DoSomething
。最好将GUI事件处理程序仅用于处理GUI事件。

您可以使用以下方法: 首先声明此新类型以访问t按钮单击过程:

type
  TButtonHack = type TButton;
然后将您的按钮铸造到TButtonHack类并调用Click过程:

TButtonHack(Button1).Click;

谢谢David,但在我的情况下没有实际的代码。我将按钮链接到标准操作(ChangeTabItem)。在我的代码中,我希望在特定的执行路径中执行ChangeTabItem。我知道该类的.Execute和executerTarget方法,但我不明白为什么不将其链接到按钮本身,因此如果我更改了与按钮相关的代码,就不需要重新编码。我希望我把我的情况说清楚。我不确定。我想你可以调用Execute来执行这个动作。当你给一个按钮分配一个动作时,OnClick事件不是也被分配了吗?不是很明确!无论如何,我会坚持你“做点什么”的方法。。。我认为这是最好的主意。我不确定我是否理解你的解决方案。我说的是Firemonky。Firemonkey中的按钮没有Click方法。@Oussama有。它受到保护。这是标准的受保护成员访问黑客。是的。我投了赞成票。虽然你最初接受了我的答案,但这可能是你所问问题的正确答案。我确实想知道为什么要调用单击事件。