Discusión sobre el artículo "El lenguaje MQL como medio de marcado de la interfaz gráfica de programas MQL (Parte 3). Diseñador de formas"

 

Artículo publicado El lenguaje MQL como medio de marcado de la interfaz gráfica de programas MQL (Parte 3). Diseñador de formas:

En este artículo, finalizaremos la descripción del nuevo concepto para la construcción de la interfaz de ventana de los programas MQL con la ayuda de las construcciones del lenguaje MQL. El editor gráfico especial permitirá ajustar de forma interactiva una disposición formada por las clases básicas de elementos de GUI, y después exportarla a una descripción MQL para usarla en nuestro proyecto MQL. Asimismo, presentamos la construcción interna del editor y las instrucciones para el usuario. Los códigos fuente se adjuntan al final del artículo.

El editor ha sido pensado para las clases de los elementos de interfaz de la Biblioteca Estándar. Para crear instrumentos similares para otras bibliotecas, necesitaremos escribir implementaciones concretas de todos los entes abstractos del sistema de marcado propuesto. En este caso, además, nos guiaremos por la implementación de las clases de marcado para la Biblioteca Estándar.

Debemos prestar atención a que el nombre "biblioteca de componentes estándar" no se corresponde del todo con la realidad, dado que, en el contexto de los artículos anteriores, ya tuvimos que modificarlo sustancialmente y sacarlo a una rama de versión paralela en la carpeta ControlsPlus. En el marco del presente artículo, continuaremos usándolo y modificándolo.

Vamos a enumerar los tipos de elementos que soportará el editor.

  • los contenedores CBox con orientación horizontal (CBoxH) y vertical (CBoxV),
  • el botón CButton,
  • el campo de edición CEdit,
  • la etiqueta CLabel,
  • el campo de edición con iteración de valores SpinEditResizable,
  • el calendario CDatePicker,
  • la lista desplegable ComboBoxResizable,
  • la lista ListViewResizable,
  • el grupo de interruptores independientes CheckGroupResizable,
  • el grupo de interruptores independientes RadioGroupResizable.

Todas las clases posibilitan el cambio adaptativo del tamaño (algunos tipos estándar ya tenían esta posibilidad inicialmente, para otros, hemos tenido que introducir nuestros propios cambios).

Proceso de edición de la forma

Autor: Stanislav Korotky

 
¡Eso fue poderoso!
 
¡¡¡Enhorabuena!!! Gran trabajo y artículos.
 
Por fin, una competición decente (me refiero al resultado). Ahora, ¡agárrense! )))))
 

El editor visual debe seguir incluyendo la edición manual de elementos: estirar, mover, escribir texto, copiar, etc. El marcado auxiliar es deseable.

Este editor es prometedor, aunque no tengo ni idea de cómo el autor realiza los otros requisitos, ya que no entiendo su tecnología. Se "subió a los hombros" de la biblioteca estándar y por un lado le dio un poderoso empujón hacia adelante, por otro lado te hace heredar sus limitaciones. No está diseñada para la transformación a gran escala... Habrá que añadir mucha funcionalidad desde arriba.

Lista de requisitos para el futuro editor:

1. Personalización manual de los elementos.

2. 2. Copia de elementos.

3. Gestión simultánea de propiedades de un conjunto de elementos.

4. Encuadre auxiliar.

5. Modo multiventana.

6. Creación de ventanas de diferentes tipos.

7. Soporte para propiedades de ventana: "siempre arriba", bloquear otras, con/sin minimización.

8. Edición paralela de ventanas.

9. Borrado de ventanas.

Eso es todo por ahora.


ZY. Por lo que sé, los controladores SB consisten en objetos MT, lo que por un lado - simplifica el sistema de interacción con los elementos y el ajuste manual (hace mucho tiempo tuve un editor basado en objetos MT y no era difícil hacerlo), por otro lado (si aceptas esta simplificación) - quita todas las ventajas del canvas (entre ellas - velocidad, efectos visuales y mucho más). Es decir - el "efecto doping" de usar SB al crear un editor, limita severamente su desarrollo. Pero, veamos...

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 
Curiosamente, incluso sin un kanvas, el autor puede hacer marcado auxiliar si resuelve el problema de configurar manualmente los elementos. Eso es lo que yo he hecho. Por supuesto, el marcado en el lienzo es visualmente más chulo, pero en el editor Sharpe, por ejemplo, el marcado, aunque escaso, es práctico. Sólo un par de líneas ayudan a posicionar los controladores. Me sorprendió cuando lo comprobé después de hacer el marcado.

También hay que hacer la barra de tareas. Preferiblemente.
 
¡Eso está muy bien!
¡Enhorabuena!

Es increible como MT5 esta mejorando con el paso del tiempo.
En un futuro cercano creo que cualquiera será capaz de construir y configurar cualquier interfaz gráfica que atenderá a sus necesidades.
 
Nuevo ejemplo de un programa con GUI construido por el diseño declarativo MQL es publicado en la base de código - ChartBrowser.
ChartBrowser
ChartBrowser
  • www.mql5.com
This is an utility which allows you to list all open charts, indicators, expert advisers, and scripts in alphabetic order, and switch between them.
 

Hola,

Me encuentro con este tipo de situación en uno de mis portátiles.

Todo se ve diminuto excepto las etiquetas de texto.

El valor de "TerminalInfoInteger(TERMINAL_SCREEN_DPI)" es 192.

¿Sabéis cómo solucionarlo? Pensaba que las librerías se ajustarían automáticamente según la configuración de mi pantalla.


 
Guilherme Mendonca #:

Hola,

Me estoy enfrentando a este tipo de situación en uno de mis portátiles.

Todo se ve pequeño excepto las etiquetas de texto.

El valor de "TerminalInfoInteger(TERMINAL_SCREEN_DPI)" es 192.

¿Sabes cómo solucionarlo? Pensé que las librerías se ajustarían automáticamente de acuerdo a la configuración de mi pantalla.


Desafortunadamente no tengo medios para probarlo en diferentes entornos. La librería está basada en controles estándar (con pequeñas correcciones no relacionadas con los dpi). Así que si está jodido de alguna manera, esto parece ser un problema común, no de la biblioteca.

Pero creo que primero deberías comprobar la configuración de escala de Windows.

 
Guilherme Mendonca #:

Me encuentro con este tipo de situación en uno de mis portátiles.

Sólo una idea - tratar de parchear Defines.mqh a:

#define  CONTROLS_FONT_SIZE                  (-10)

Se añade el signo menos.

U otra idea:

#define  CONTROLS_FONT_SIZE                  ((int)(10.0 / (TerminalInfoInteger(TERMINAL_SCREEN_DPI) / 96.0)))
Hazme saber si alguna de las variantes ayuda.