- Tipos de objetos y características de la especificación de sus coordenadas
- Objetos vinculados a tiempo y precio
- Objetos vinculados a coordenadas de pantalla
- Crear objetos
- Borrar objetos
- Encontrar objetos
- Visión general de las funciones de acceso a las propiedades de los objetos
- Propiedades principales de los objetos
- Coordenadas de tiempo y precio
- Anclar la esquina de la ventana y las coordenadas de la pantalla
- Definir el punto de anclaje en el objeto
- Gestión del estado de los objetos
- Prioridad de los objetos (orden Z)
- Ajustes de visualización de objetos: color, estilo y marco
- Ajustes de fuente
- Rotar un texto en un ángulo arbitrario
- Determinar ancho y alto del objeto
- Visibilidad de los objetos en el contexto de marcos temporales
- Asignar un código de carácter a una etiqueta
- Propiedades de los rayos para objetos con líneas rectas
- Gestionar el estado pulsado de los objetos
- Ajustar imágenes en objetos bitmap
- Recortar (dar salida a parte) de una imagen
- Propiedades de los campos de entrada: alineación y sólo lectura
- Anchura del canal de desviación estándar
- Establecer niveles en objetos de nivel
- Propiedades adicionales de los objetos de Gann, Fibonacci y Elliot
- Objeto gráfico
- Mover objetos
- Obtener hora o precio en puntos de línea especificados
Gestionar el estado pulsado de los objetos
Para objetos como botones (OBJ_BUTTON) y paneles con una imagen (OBJ_BITMAP_LABEL), el terminal admite una propiedad especial que cambia visualmente el objeto del estado normal (liberado) al estado pulsado y viceversa. La constante OBJPROP_STATE está reservada para ello. La propiedad es de tipo booleano: cuando el valor es true, se considera que el objeto está pulsado, y cuando es false, se considera que está liberado (por defecto).
Para OBJ_BUTTON, el efecto de un marco tridimensional es dibujado por el propio terminal, mientras que para OBJ_BITMAP_LABEL el programador debe especificar dos imágenes (como archivos o recursos) que proporcionará una representación externa adecuada. Dado que esta propiedad es técnicamente sólo un conmutador, es fácil utilizarla para otros fines, y no sólo para efectos de «pulsar» y «soltar». Por ejemplo, con la ayuda de imágenes adecuadas, puede implementar una bandera (opción).
El uso de imágenes en objetos se abordará en la siguiente sección.
El estado del objeto suele cambiar en los programas MQL interactivos que responden a las acciones del usuario, en particular a los clics del ratón. Analizaremos esta posibilidad en el capítulo sobre eventos.
Ahora vamos a probar la propiedad en botones simples, en modo estático. El script ObjectButtons.mq5 crea dos botones en el gráfico: uno en estado pulsado y otro en estado liberado.
La configuración de un solo botón se proporciona a la función SetupButton con parámetros que especifican el nombre y el texto del botón, así como sus coordenadas, tamaño y estado.
#include "ObjectPrefix.mqh"
|
A continuación, en OnStart llamamos a esta función dos veces.
void OnStart()
|
Los botones resultantes podrían tener este aspecto:
Botones OBJ_BUTTON pulsados y soltados
Curiosamente, puede hacer clic en cualquiera de los botones con el ratón, y el botón cambiará de estado. Sin embargo, aún no hemos hablado de cómo interceptar una notificación al respecto.
Es importante tener en cuenta que este cambio de estado automático sólo se realiza si la opción Disable selection está marcada en las propiedades del objeto, pero esta condición es la predeterminada para todos los objetos creados mediante programación. Recuerde que, si es necesario, esta selección puede activarse: para ello, debe establecer explícitamente la propiedad OBJPROP_SELECTABLE en true. La hemos utilizado en algunos ejemplos anteriores.
Para eliminar botones que se han vuelto innecesarios, utilice el script ObjectCleanup1.mq5.