Discusión sobre el artículo "Interfaces gráficas X: Actualizaciones para la librería Easy And Fast (build 2)"

 

Artículo publicado Interfaces gráficas X: Actualizaciones para la librería Easy And Fast (build 2):

Desde la anterior publicación del artículo de esta serie, la librería Easy And Fast ha adquirido nuevas posibilidades. Ha sido hecha la optimización parcial del esquema y del código de la librería, eso ha reducido un poco el consumo de recursos de la CPU. Algunos métodos que se repiten con frecuencia en muchas clases de los controles han sido traspasados a la clase base CElement.

A continuación, se muestran las capturas de pantalla con los ejemplos de la interfaz gráfica de la aplicación MQL sobre el fondo claro y oscuro:

 Fig. 1. Ejemplo de la interfaz gráfica con el esquema de colores predefinido sobre el fondo claro.

Fig. 1. Ejemplo de la interfaz gráfica con el esquema de colores predefinido sobre el fondo claro.

Autor: Anatoli Kazharski

 

Gracias al autor por un trabajo de calidad.

 

A la espera del vídeo.

Y más realización del dinamismo de la ventana. Si es posible).

En mi opinión, esto sería una conclusión lógica de todo el trabajo, y haría que la interfaz escrita con la ayuda de la biblioteca proporcionada completamente completa.

(Esta propuesta es una expresión de deseo del "usuario interesado". Nada más).

 

En la pestaña 1 hay 3 botones de opción, ¿qué y dónde debo añadir en este ejemplo para que al cambiarlos aparezca una alerta con el nombre del botón pulsado?

p.d. En este ejemplo, en el fichero MainWindow.mqh en la función bool CProgram::CreateTable hay dos defines: COLUMNS2_TOTAL y ROWS2_TOTAL, y luego en la misma función se usan las defines COLUMNS1_TOTAL y ROWS1_TOTAL. Probablemente se trate de un error.

 
Alexey Oreshkin:

En la pestaña 1 hay 3 botones de radio, ¿qué y dónde debo añadir en este ejemplo para que al cambiarlos aparezca una alerta con el nombre del botón pulsado?

En el manejador de eventos de la clase personalizada CProgram::OnEvent() añade este bloque de código:

//+------------------------------------------------------------------+
//| Controlador de eventos gráficos|
//+------------------------------------------------------------------+
void CProgram::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
//...
//--- Evento click en la etiqueta de texto
   if(id==CHARTEVENT_CUSTOM+ON_CLICK_LABEL)
     {
      //--- Si ha pulsado el botón de radio
      if(lparam==m_radio_buttons1.Id())
        {
         ::Alert("element id (lparam): ",lparam,"; radio button index (dparam): ",(int)dparam,"; radio button description (sparam): ",sparam);
         return;
        }
      //---
      return;
     }
//...
  }

//---

Resultado:


//---

p.s. En este ejemplo, en el fichero MainWindow.mqh en la función bool CProgram::CreateTable hay dos definiciones: COLUMNS2_TOTAL y ROWS2_TOTAL, y luego en la misma función se usan las definiciones COLUMNS1_TOTAL y ROWS1_TOTAL. Probablemente se trate de un error.

Sí. Estaba transfiriendo el código desde otro archivo y olvidé arreglarlo.

 
Реter Konow:

A la espera del vídeo.

Y más realización del dinamismo de la ventana. Si es posible).

En mi opinión, esto sería una conclusión lógica de todo el trabajo, y haría que la interfaz escrita con la ayuda de la biblioteca proporcionada completamente completa.

(Esta propuesta es una expresión de deseo del "usuario interesado". Nada más).

Hay mucho más que hacer antes de que sea completamente funcional y la conclusión lógica de todo el trabajo, además del dinamismo de las ventanas. Habrá al menos nueve controles más. Y también tenemos que hacer algunas mejoras que simplifiquen la creación de la interfaz, ya que algunos usuarios tienen dificultades. Y no estaría de más hacer también documentación de ayuda. Para ser más precisos, es incluso necesario, pero lo haré sólo cuando el desarrollo esté totalmente terminado. Todavía falta mucho para ello.

 
Anatoli Kazharski:

Antes de llegar a un estado completamente completo y a la finalización lógica de toda la obra, queda mucho por hacer además del dinamismo de las ventanas. Habrá al menos nueve controles más. Y también tenemos que hacer algunas mejoras que simplifiquen la creación de la interfaz, ya que algunos usuarios tenían dificultades. Y no estaría de más hacer también documentación de ayuda. Para ser más precisos, es incluso necesario, pero lo haré sólo cuando el desarrollo esté totalmente terminado. Eso no será hasta dentro de un tiempo.

Ya veo.

El dinamismo de las ventanas no es lo principal. Pero es conveniente.

Muy interesante, qué otros controles vas a añadir.

¿Harás un vídeo con la demostración de las características de la interfaz?

O, por ejemplo, podrías filmar el proceso de creación de una interfaz para un pequeño experto trabajando en MA.

Me gustaría mucho ver el resultado final en acción.

Yo mismo lo comprobaría todo, pero francamente no tengo tiempo porque estoy muy ocupado con mi trabajo.

Además, un vídeo así podría llamar mucho la atención de los usuarios.

 
Реter Konow:

Ya veo.

El dinamismo de las ventanas no es lo principal. Pero es conveniente.

Muy interesante, qué otros controles vas a añadir.

¿Harás un vídeo con la demostración de las características de la interfaz?

O, por ejemplo, podrías filmar el proceso de creación de una interfaz para un pequeño experto trabajando en MA.

Me gustaría mucho ver el resultado final en acción.

Yo mismo lo comprobaría todo, pero francamente no tengo tiempo porque estoy muy ocupado con mi trabajo.

Además, un vídeo así podría llamar mucho la atención de los usuarios.

Todo esto y mucho más ya está planeado. Habrá un montón de ejemplos de trabajo que ayudarán a los desarrolladores de MQL a utilizar esta biblioteca en sus proyectos. Desafortunadamente, no puedo dedicar mucho tiempo a cada uno de ellos individualmente. Pero puedo encontrar tiempo para los artículos.

De los elementos será, por ejemplo:

  • Elemento "Tiempo".
  • Elemento "Campo de texto" con transferencia automática de palabras + barra de desplazamiento.
  • Listas de botones de radio y casillas de verificación con una barra de desplazamiento vertical.
  • Y mucho más.

 
Anatoli Kazharski:

En el manejador de eventos de la clase personalizada CProgram::OnEvent() añade este bloque de código:

Gracias. Eso es lo que hice, pero no puse :: antes de Alert, por eso no funcionó.
 
Alexey Oreshkin:
Gracias. Eso es lo que hice, pero no puse :: delante de Alert para que no funcionara.
La ausencia de :: no debería haber tenido ningún efecto. El error era otro.
 
Anatoli Kazharski:
La ausencia de :: no debería haber tenido ningún efecto. El error era otro.

Quizás borré mi código y ahora no puedo asegurarlo.

El error se produce cuando cierro la ventana creada por el indicador con una cruz. He cambiado ligeramente el archivo MainWindow.mqh del ejemplo que se encuentra aquí: Indicators\Article 10\SeparateWindow.

y no entiendo como borrar una fila de la tabla creada ?