如何模拟按下按钮?

问题描述 投票:5回答:5

我想测试一些表格。有没有办法模拟按下确定(或取消)按钮,以便按下按钮并触发与之关联的事件处理程序?

delphi event-handling vcl
5个回答
20
投票

最干净的方法是调用按钮的Click方法。由于以下原因,这比替代方案更好:

  • 您可以阅读OnClick属性,检查它不是nil,然后调用该方法。但这似乎毫无意义,因为Click方法已经做到了。重复此代码毫无意义。
  • 您可以直接调用事件处理程序,但这需要您的代码知道它。这意味着与实现细节的不期望的耦合程度。
  • 调用Click会复制用户单击时实际发生的情况。当用户按下按钮时会发生这种情况。例如,它处理与按钮关联的任何操作。它设置窗体ModalResult属性。等等。

5
投票

btn_ok.clickbtn_okClick(sender);


1
投票

调用OnClick事件处理程序不会调用Delphi的默认事件处理程序,而只调用用户实现的处理程序。我认为你应该创建自己的类来自TCustomButton,并实现一个调用Click方法的函数(它受到保护)。


0
投票

TSpeedButton的更正:

@David Heffernan描述的行为并不完全适用于组中的速度按钮。调用Click方法似乎不会影响按钮的“Down”状态。

为了解决这个问题,我使用了以下代码:

MyButton.Click;
MyButton.Down := True;

-1
投票

最好使用Button =>的PerformClick()方法

button1.PerfomClick()

如果您的Button未处于正确的单击状态(启用为false或不可见),则不会执行click eventmethod。

© www.soinside.com 2019 - 2024. All rights reserved.