我怎样才能模拟按下按钮



我想测试一些表单。有没有一种方法可以模拟按下"确定"(或"取消")按钮,从而按下该按钮并触发与其相关的事件处理程序?

最干净的方法是调用按钮的Click方法。由于以下原因,这比其他选择要好:

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

btn_ok.clickbtn_okClick(sender);

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

TSpeedButton:的校正

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

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

MyButton.Click;
MyButton.Down := True;

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

button1.PerfomClick()

如果你的按钮没有处于正确的点击状态(enabled false或不可见),它将不会执行点击事件方法。

相关内容

  • 没有找到相关文章

最新更新