Galería de interfaces de usuario escritas en MQL - página 59

 
El directorio todavía está en ruso ...... Espero que sea posible tener el directorio y los nombres de los archivos en inglés como KIB PROJECTS ...... ¡Esto es una pequeña petición de mi parte!
 
#include<(2)  KIB PROJECTS\(6) DEMO PROJECTS\Demo project 1.mqh>

El proyecto de demostración 1 está incluido en (1) KIB-source v1, pero ¿por qué no veo la ventana relacionada en el diagrama?

 
hini #:
El catálogo está todavía en ruso ...... Espero que sea posible tener el catálogo y los nombres de los archivos en inglés como KIB PROJECTS ....... ¡Esta es una pequeña petición de mi parte!
Por supuesto, traduciré los catálogos al inglés antes de subirlos a kodobase. Simplemente no he tenido tiempo. Esta es una versión provisional para pruebas públicas.
 
hini #:

El proyecto de demostración 1 está incluido en (1) KIB-source v1, pero ¿por qué no veo la ventana asociada en el diagrama?

Es extraño. Lo comprobaré ahora.
 
hini #:

El proyecto de demostración 1 está incluido en (1) KIB-source v1, pero ¿por qué no veo la ventana asociada en el diagrama?

Comprobado el ensamblaje. Demo-proyecto 1.mqh se encuentra aquí:

(2) KIB PROJECTS\(6) DEMO PROJECTS\Demo project 1.mqh


 
Más adelante haré un desglose completo del lanzamiento.
 

Ayer, tras descargar la nueva versión, después de mucho trabajo y estando en un subidón emocional, escribí un post muy positivo alabando literalmente la nueva funcionalidad. Tal entusiasmo no es muy apropiado en el contexto de una discusión estrictamente técnica. Hoy quiero examinar las soluciones aplicadas con calma y sin prejuicios. Agradeceré las críticas constructivas y la evaluación objetiva. Es importante para mí tener claro el punto de vista de terceros usuarios. Los comentarios ayudarán a realizar ajustes y mejoras. Y, por supuesto, a detectar y corregir errores.

 
Pasemos al desglose del comunicado.
 
Empezaré en una página nueva para que la información importante permanezca a la vista más tiempo.
 


La tarea consistía en implementar la interacción programática del código de usuario con la interfaz gráfica del programa.

Según la idea:

  • Después de escribir y depurar el código KIB, el usuario obtiene el resultado deseado (en forma de ventanas listas) y guarda el proyecto.
  • Como resultado de la generación hay dos archivos: UIDATA.mqh técnico y "API.mqh". El primero es necesario para la carga y el funcionamiento de la interfaz, el segundo - para fijar los eventos de los elementos.
  • El usuario transfiere ambos archivos de la carpeta Files a su proyecto (actualmente: KIB PROJECTS\(5) USER PROJECTS\Project 1).
  • Compila su Asesor Experto o indicador con las líneas que conectan el motor y ambos archivos:
//+------------------------------------------------------------------+
#include<(1)  KIB 1.0\(4) CONNECTIONS\KIB-DRIVE CONNECTIONS.mqh>
//--------------------------------------------------------------------
#include<(2)  KIB PROJECTS\(5) USER PROJECTS\Project 1\UIDATA.mqh>
//--------------------------------------------------------------------
#include<(2)  KIB PROJECTS\(5) USER PROJECTS\Project 1\API.mqh> 
//+------------------------------------------------------------------+
  • Lanza el EA en el gráfico y ve la interfaz.
El EA Shell v1.mq5 se utiliza como ejemplo en el proyecto de demostración , que "representa" un programa de usuario. Tiene conexiones idénticas que son necesarias para el análogo del usuario .

//----------------------------------------------------------------------------------

Sin embargo, antes de esta versión, el usuario sólo podía recibir eventos de elementos interactivos en un archivo API subclave.

Es importante subrayar: el usuario no disponía de muchas funciones de software absolutamente esenciales.

Voy a enumerarlas:

  • Abrir/cerrar ventanas GUI mediante programación.
  • Obtener/establecer valores en el parámetro de diferentes tipos de elementos.
  • Cambiar los estados de los elementos de forma programática: por ejemplo, encender/apagar, bloquear/desbloquear elementos en las acciones del usuario o en eventos externos fijados por el Asesor Experto/indicador en ejecución.
  • Obtener/establecer programáticamente otros valores de las propiedades de los elementos: base, texto, color del marco. Cambiar el icono.


Esta actualización resuelve casi todas las tareas establecidas.



Permítanme enumerarlas:.
  • El usuario puede abrir/cerrar ventanas GUI por llamada de programa.
  • El usuario puede obtener/establecer valores en el parámetro de elementos que lo tengan. Incluyendo elementos no interactivos como celdas de tabla (CELL) y etiquetas de texto con parámetro (VALUE).
  • Se implementa la conmutación programada entre dos y cuatro estados de diferentes tipos de elementos. Para botones y casillas de verificación están disponibles cuatro estados de conmutación de programa (activado/desactivado/activado/desactivado), para otros elementos - dos (bloqueado/desbloqueado).
  • Se dispone de pequeños conjuntos de propiedades de elementos individuales para los valores de retorno/fijación del programa. Cada conjunto está representado por un prefijo de abre con una lista intellisense. Generaliza un pequeño grupo relacionado de elementos que tienen propiedades similares. Este enfoque elimina la confusión en la multitud de propiedades de diferentes tipos de elementos.
  • Establecer programáticamente un valor a un parámetro envía el evento a la ubicación del elemento en el archivo API, donde el usuario puede escribir código adicional para manejarlo.
  • Las celdas de una tabla se nombran automáticamente doblando el nombre de su fila y columna. Obtienen un nombre y una envoltura funcional en el archivo UIDATA.mqh. Sin embargo, no están presentes en el archivo API porque no son elementos interactivos. Pueden encontrarse en la lista de elementos de la ventana y, por lo demás, responden al control del software como todos los elementos.


Gracias a las posibilidades de control del programa, se hacen realidad cosas que antes no estaban disponibles:

1. Envío de valores. Obtener el valor de un elemento y enviarlo a otros elementos de la misma ventana, o de otra.

2. Apertura por software de ventanas de aviso y diálogo. Por ejemplo, en una situación en la que es necesario mostrar un mensaje urgente o una recomendación a un usuario.

3. Obtención de una imagen general de la configuración y el estado de ejecución mediante consultas de los parámetros de los elementos. Puede utilizarse como complemento de los análisis de otros parámetros del programa.

4. Restablecimiento dinámico de los ajustes del programa sin interrumpir el proceso de trabajo.

5. Gracias a las posibilidades de cambiar los colores de las bases, el texto y los marcos (aún no hay marcos), la interfaz se vuelve más interactiva e informativa. Por ejemplo, cuando se rebobina un valor y éste entra en la zona de riesgo, el campo de entrada con botones puede señalar al usuario el peligro mediante el color rojo de su base o texto. Esto ya es fácil de implementar. Lo mismo se aplica a la barra deslizante. En la zona de valores peligrosos, se puede cambiar programáticamente el color de la barra. Resulta interactivo, informativo y práctico.


De momento no me he dado cuenta de todas las posibilidades que se avecinan y estoy seguro de que hay mucho más por venir.


A continuación, pasemos a la parte práctica del desglose de la nueva versión.