我想测试一些表单。有没有办法模拟Ok(或Cancel)按钮的按下,以便按下按钮并触发与其关联的事件处理程序?如何模拟按钮按下?
回答
最简洁的方法是调用按钮的Click方法。这比以下原因更好:
- 您可以阅读OnClick属性,检查它是否为零,然后调用该方法。但是这看起来似乎毫无意义,因为Click方法已经做到了。没有重复此代码的意思。
- 而且你可以直接调用事件处理程序,但这需要你的代码具有它的知识。这意味着对实施细节的耦合程度不理想。
- 调用
Click
可以复制用户点击时实际发生的情况。它是当用户按下按钮时会发生什么。例如,它处理与按钮关联的任何操作。它设置形式ModalResult属性。等等。
+1,很棒的信息..永远不会想到它, – PresleyDias 2012-03-05 09:06:50
这正是我想要的。我对它进行了测试,它的工作原理让我更容易测试表单。非常感谢! – Arnold 2012-03-05 20:44:20
btn_ok.click
或btn_okClick(sender);
调用OnClick
事件处理程序将不会调用Delphi的默认事件处理程序,而只是由用户实施的一个。我认为你应该从TCustomButton
创建你自己的类,并实现一个调用Click
方法的函数(它受保护)。
'TCustomButton.Click'是公共的,不受保护。 – 2012-03-05 07:59:06
是的,只需在'TButton'实例上调用'Click'即可。不需要派生。 – 2012-03-05 08:06:39
它在VCL中是公共的,它在Firemonkey中受到保护。 – naXa 2014-06-28 20:22:36
这是更好地使用按钮=>
button1.PerfomClick()
的PerformClick()
方法如果您的按钮是不是在正确的状态,单击(启用虚假或不可见的),也不会进行点击eventmethod。
VCL中没有'PerformClick'。在WinForms中有一个'PerformClick'。也许这就是你所指的。 – 2012-03-05 10:00:34
- 1. 模拟按钮按下
- 2. 如何在Android模拟器中模拟按下home按钮
- 3. Windows Phone“Home”按钮按下模拟
- 4. NSTextField模拟返回按下按钮
- 5. 如何模拟按下ARC
- 6. 模拟鼠标按下按钮(按钮4和5)
- 7. LibGDX:如何模拟按下Android后退按钮
- 8. 如何模拟按钮在窗体中按下视觉?
- 9. 如何模拟每2秒按下一次“Page Down”按钮?
- 10. Android模拟按钮按
- 11. 如何在wpf中模拟按键集中在treeview上按下F2按钮?
- 12. 如何捏按钮按下按钮?
- 13. Android:如何模拟后退按钮
- 14. 如何模拟QFileDialog的取消按钮?
- 15. 如何模拟图片按钮点击
- 16. 如何模拟点击按钮编程
- 17. Flex - 用于模拟按键的按钮
- 18. 模拟键盘按钮按[SDL库]
- 19. c#Web浏览器模拟按钮按
- 20. Android - 如何在alertdialog中按下按钮并按下按钮是或否按钮
- 21. 模拟点击按钮
- 22. 模拟TDBNavigator按钮单击
- 23. 模拟按钮点击
- 24. 模拟点击按钮
- 25. Android - 模拟后退按钮
- 26. iOS单元测试:模拟主页按下按钮等
- 27. 在Android模拟器上按下按钮时发出通知
- 28. 在Android模拟器上按下相机按钮
- 29. 模拟一个Backspace按钮在c#中按下空白ActiveSource
- 30. Android模拟器屏幕在按下按钮后变为空白
也看到这个答案为[Delphi的贵测试和模态-形式](http://stackoverflow.com/a/6574035/576719)。 – 2012-03-05 07:03:50
你想要的模拟精度如何?鼠标移动了吗?按钮是否显示在屏幕上?该按钮应该接收像'wm_LButtonDown'这样的消息吗? – 2012-03-05 14:47:16
@LU RD,感谢您的指点!我只是想知道如何测试模态表单。这有助于。 – Arnold 2012-03-05 20:47:45