Discusión sobre el artículo "Interfaces gráficas I: "Animar" la interfaz gráfica (Capítulo 3)"

 

Artículo publicado Interfaces gráficas I: "Animar" la interfaz gráfica (Capítulo 3):

Este artículo es la continuación de la primera parte de la serie sobre las interfaces gráficas. El artículo Interfaces gráficas I: Preparación de la estructura de la librería (Capítulo 1) cuenta con más detalles para qué sirve esta librería. Al final de cada capítulo se puede encontrar la lista completa de los enlaces a los artículos de la primera parte, así como descargar la versión completa de la librería en la fase actual del desarrollo del proyecto. Es necesario colocar los ficheros en los mismos directorios, tal como están ubicados en el archivo.

En el artículo anterior de esta serie sobre la creación de las interfaces gráficas hemos empezado a desarrollar la clase del formulario para los controles. En el presente artículo continuaremos el desarrollo de la clase llenándola con los métodos para poder mover el formulario dentro del área del gráfico, así como integraremos este elemento de la interfaz en el núcleo de la librería. Además de eso, configuraremos todo de tal manera que, al situar el cursor sobre los controles del formulario, éstos cambien su color.

Cambio de apariencia de controles de la interfaz al apuntar con el cursor

Antes, cuando hemos considerado la implementación de la clase CElement, que es la clase base para todos los controles, como uno de sus miembros ha sido creado el método CElement::ChangeObjectColor() para cambiar el color del objeto al situar el cursor sobre él. Ha llegado el momento para crear el mecanismo que permita usar eso en nuestro trabajo. Para activar este mecanismo, vamos a necesitar un temporizador. Por defecto, está desactivado en los ajustes de la aplicación MQL, y el desarrollador decide por sí mismo si hace falta activarlo en función de las tareas planteadas.

Para la activación del temporizador, el lenguaje MQL ofrece dos funciones de frecuencia diferente: EventSetTimer() y EventSetMillisecondTimer(). La primera permite establecer el intervalo no menos de un segundo. Para nuestras tareas eso no vale porque un segundo es un intervalo demasiado pequeño para cambiar la apariencia de un control al situar el cursor sobre él. El cambio tiene que realizarse inmediatamente y sin retardos. Por eso, vamos a usar la función EventSetMillisecondTimer() que permite establecer el temporizador con los intervalos medidos en milisegundos. En el manual de referencia de MQL se pone que el intervalo mínimo que se puede establecer con esta función es de 10-16 milisegundos. Eso es suficiente para realizar nuestro plan.

Fig. 2. Prueba de reacción de los tos al situar el cursor sobre ellos.

Fig. 2. Prueba de reacción de los tos al situar el cursor sobre ellos

Autor: Anatoli Kazharski

Razón de la queja: