Quiero probar algunos formularios. ¿Hay alguna forma de simular la pulsación de un botón Aceptar (o Cancelar) para que se presione el botón y active los controladores de eventos que están asociados con él?¿Cómo puedo simular la presión de un botón?
Respuesta
El enfoque más limpio es llamar al método Click del botón. Esto es mejor que las alternativas por estos motivos:
- Puede leer la propiedad OnClick, verificar que no sea nula y luego llamar al método. Pero eso parece bastante inútil ya que el método Click ya hace precisamente eso. No tiene sentido duplicar este código.
- Y podría llamar al controlador de eventos directamente, pero eso requeriría que su código lo supiera. Eso implica un nivel indeseable de acoplamiento a los detalles de implementación.
- Llamando
Click
replica lo que sucede realmente cuando el usuario hace clic. Es es lo que sucede cuando el usuario presiona el botón. Se trata de cualquier acción que esté asociada con el botón, por ejemplo. Establece los formularios propiedad ModalResult. Y así.
+1, gran información ... nunca lo hubiera pensado, – PresleyDias
Esto es exactamente lo que quería. Lo probé y funciona, lo que me facilita la prueba de formularios. ¡Muchas gracias! – Arnold
btn_ok.click
o btn_okClick(sender);
que llama al gestor de eventos OnClick
no llamar controlador de eventos predeterminado del Delphi, pero sólo el implementado por el usuario. Creo que deberías crear tu propia clase derivada de TCustomButton
e implementar una función que llame al método Click
(está protegido).
'TCustomButton.Click' es público, no está protegido. –
Sí, simplemente llame a 'Haga clic' en una instancia' TButton'. Sin necesidad de derivación. –
Es público en VCL, y está protegido en Firemonkey. – naXa
Es mejor utilizar el método del botón =>
button1.PerfomClick()
PerformClick()
Si el botón no está en el estado correcto para hacer clic (habilitado falsa o no visible), no va a realizar el clic EventMethod.
No hay 'PerformClick' en el VCL. Hay un 'PerformClick' en WinForms. Tal vez eso es a lo que te refieres. –
- 1. ¿Cómo puedo simular el botón Atrás del navegador en Capibara?
- 2. Simular un clic de botón dentro de la aplicación (VB.NET)
- 3. ¿Puede Jsoup simular presionar un botón?
- 4. ¿Cómo puedo simular un clic en un botón de opción de jQuery UI?
- 5. Android: Cómo simular el botón Atrás
- 6. ¿Cómo simular un botón hacer clic usando el código?
- 7. Android - Simular el botón Atrás
- 8. Android - Detectar Fin de Presión Larga
- 9. ¿Cómo puedo simular alignas (T)?
- 10. ¿Cómo puedo simular el montaje?
- 11. ASP.net simular el botón Atrás del navegador
- 12. Distinga entre el tiempo de espera de la pantalla y el botón de encendido y presión?
- 13. ¿Cómo puedo simular que se termine mi aplicación Metro?
- 14. ¿Cómo puedo simular objetos de Moose?
- 15. La detección de la presión de usuario F10 en WPF
- 16. mod_wsgi falla bajo presión
- 17. ¿Cómo puedo simular un clic en una etiqueta de anclaje?
- 18. ¿Cómo puedo simular errores de TCP/IP?
- 19. iOS: ¿Cómo obtener la duración del gesto de presión prolongada?
- 20. ¿Cómo puedo simular la rutina ErrorSignal de Elmah?
- 21. ¿Cómo puedo simular la corrupción del sistema de archivos ext3?
- 22. ¿Cómo puedo simular la clave de Windows en Autohotkey?
- 23. ¿Cómo puedo simular la fecha real de JodaTime?
- 24. ¿Cómo puedo simular correctamente KeysCollection en HttpSessionStateBase?
- 25. ¿Cómo puedo simular un servidor que no responde?
- 26. ¿Cómo puedo simular el Response.StatusCode con Moq?
- 27. ¿Cómo puedo simular interfaces en C++?
- 28. ¿Cómo puedo simular un cable colgante en WPF?
- 29. ¿Cómo puedo simular una OracleConnection y OracleCommand?
- 30. ¿Cómo puedo simular macros en JavaScript?
Consulte también esta respuesta para [delphi-gui-testing-and-modal-forms] (http://stackoverflow.com/a/6574035/576719). –
¿Qué tan precisa es la simulación que quieres? ¿Debería moverse el mouse? ¿Debería aparecer el botón presionado en la pantalla? ¿Debería el botón recibir mensajes como 'wm_LButtonDown'? –
@LU RD, gracias por el puntero! Me preguntaba cómo probar formas modales. Esto ayuda. – Arnold