Discusión sobre el artículo "Interfaces gráficas XI: Controles dibujados (build 14.2)" - página 3

 
Artyom Trishkin:

Tol, ¿en cuál de los artículos de esta serie puedes leer sobre CKeys?

...

Es decir: inicio un programa y empiezo a pulsar Retroceso - todos los controles se borran con cada pulsación de Retroceso, empezando por el último añadido. Finalmente, la ventana de formulario ya vacía también se borra.

...


GUIs X: Elemento de campo de entrada de texto multilínea (compilación 8)

No se ha podido reproducir la situación en la que al pulsar la tecla Retroceso se borran elementos GUI.

 
Artyom Trishkin:

Si escribes una línea en Program.mqh en TestLibrary14 - cambio del color del título de la ventana:

Entonces minimizar la ventana devuelve el color al valor por defecto. Y los botones de información sobre herramientas, minimizar/desmodificar y cerrar se repintan en el color del título de la ventana que se estableció mediante programación. Y entonces el color de estos botones cambia al color por defecto sólo cuando se pasa el cursor por encima.

...

Olvidé añadir el cambio de color del título del formulario al pasar el ratón por encima. Será en una de las próximas actualizaciones.

En este momento el color necesita ser configurado para ambos estados:

...
   m_window.CaptionColor(clrDimGray);
   m_window.CaptionColorHover(clrDimGray);
...

//---

Para los botones, el color se puede establecer a través de sus punteros y después de la creación del formulario.

...
   m_window.GetCollapseButtonPointer().BackColorHover(clrGray);
   m_window.GetTooltipButtonPointer().BackColorHover(clrGray);
//---
   m_window.GetCollapseButtonPointer().BackColorPressed(clrGray);
   m_window.GetTooltipButtonPointer().BackColorPressed(clrGray);
...

//---


 

En mi opinión, el término "núcleo de la biblioteca" utilizado en el artículo no es del todo correcto. Antes se utilizó el término "motor de biblioteca", pero no encaja del todo.

El término "núcleo" debería referirse a una matriz estática que combina toda la información necesaria, y el término "motor" debería referirse a un mecanismo que trabaja con esta información e implementa un conjunto de tareas.

El término "biblioteca" en programación hace referencia a una funcionalidad diversa, dispar e independiente que sirve como conjunto de herramientas para resolver un conjunto de tareas y no está unida en torno a un único centro. Este conjunto de herramientas no es ni un "motor" ni un "núcleo", sino sólo un conjunto de herramientas para construir mecanismos de usuario.

Si una biblioteca contiene un núcleo y un motor, ya no es una biblioteca, sino un sistema que funciona como un todo.

La transformación de una biblioteca gráfica en un mecanismo integral para crear GUI es una etapa natural del desarrollo, tras la cual la biblioteca como tal dejará de existir. Es decir, no habrá necesidad de funcionalidades dispares, porque un mecanismo ya preparado resuelve un conjunto de tareas de forma mucho más eficiente.

Tal vez ahora la biblioteca se esté convirtiendo en un mecanismo de este tipo, pero de momento aún no ha sucedido. Por lo tanto, los términos "núcleo" y "motor" de la biblioteca no son del todo correctos.

imho.

 

Hola, El conjunto de controles es realmente agradable y útil, pero sería aún mejor si se puede manejar más alta configuración de PPP de una manera mejor.

Obviamente, los mapas de bits se muestran correctamente, pero el texto no. Se desplaza hacia abajo y se recorta como se muestra en la imagen de abajo:

Yo uso la siguiente configuración de pantalla :


 
Artur Zas:

Hola, El conjunto de controles es realmente agradable y útil, pero sería aún mejor si se puede manejar más alta configuración de PPP de una manera mejor.

Obviamente, los mapas de bits se muestran correctamente, pero el texto no. Se desplaza hacia abajo y se recorta como se muestra en la imagen de abajo:

Yo uso la siguiente configuración de pantalla :


 
Facundo Laje:
Hola, ¿podría ser utilizado con MT4?

 
Facundo Laje:
Hola, ¿podría ser utilizado con MT4?

Técnicamente hablando, debería como OBJ-BITMAP_LABEL también está disponible en MQL4, pero tendría que ajustar el código de la biblioteca, ya que hay algunos lugares donde el código simplemente no compilar utilizando el compilador MQL4.

Intentaré jugar con la librería y te haré saber si soy capaz de portarla a MQL4. También puedes probar por ti mismo. Sólo cambia el nombre de la extensión .mq5 del EA de ejemplo a .mq4 e intenta compilar el código.

Obviamente, obtendrá errores de compilación sin embargo se puede comprobar dónde y lo que son.

 

Hola,

Estoy intentando desarrollar mi propio panel de control siguiendo esta serie de artículos... Estoy interesado en la parte del modo multi-windows(Articulo04) pero he usado la Libreria14 actualizada(Articulo10).

Lo que tengo hasta ahora(en las fotos adjuntas):


imagen1

imagen2

¿Qué me perdí porque la ventana2 y window3 no se mueven, no se cierra cuando se pulsa los botones de cierre y el botón de colapso que falta ..

Aquí están las partes de código de las ventanas 2 y 3:

//-------- Ventana2-------
#resource "\\Images\\EasyAndFastGUI\\Icons\\bmp16\\color_picker.bmp"
bool CmyPanel_Test2::CreateWindow2(const string caption_text)
  {
//--- Almacenar el puntero de la ventana
   CWndContainer::AddWindow(m_window2);
    m_window2.MainPointer(m_mb_contextmenu1);
//--- Coordenadas
   int x =(m_window2.X()>0) ? m_window2.X() : 100;
   int y =(m_window2.Y()>0) ? m_window2.Y() : 100;
//--- Propiedades
   m_window2.Movable(true);
   m_window2.Alpha(200);
   m_window2.XSize(300);
   m_window2.YSize(100);
   m_window2.IconXGap(3);
   m_window2.IconYGap(2);
   m_window2.WindowType(W_DIALOG);
   m_window2.CloseButtonIsUsed(true);
   m_window2.GetCloseButtonPointer().Tooltip("Close");
   m_window2.GetCollapseButtonPointer().Tooltip("Collapse/Expand");
   m_window2.IconFile("Images\\EasyAndFastGUI\\Icons\\bmp16\\color_picker.bmp");
//--- Crear un formulario
   if(!m_window2.CreateWindow(m_chart_id,m_subwin,caption_text,x,y))
      return(false);
//---
   return(true);
  }
//------------------Window3----------------
bool CmyPanel_Test2::CreateWindow3(const string caption_text)
  {
//--- Almacenar el puntero de la ventana
   CWndContainer::AddWindow(m_window3);
    m_window2.MainPointer(m_menubar);
//--- Coordenadas
   int x =(m_window2.X()>0) ? m_window2.X() : 100;
   int y =(m_window2.Y()>0) ? m_window2.Y() : 100;
//--- Propiedades
   m_window3.Movable(true);
   m_window3.Alpha(200);
   m_window3.XSize(200);
   m_window3.YSize(200);
   m_window3.IconXGap(3);
   m_window3.IconYGap(2);
   m_window3.WindowType(W_DIALOG);
   m_window3.CloseButtonIsUsed(true);
   m_window3.GetCloseButtonPointer().Tooltip("Close");
   m_window3.GetCollapseButtonPointer().Tooltip("Collapse/Expand");
   m_window3.IconFile("Images\\EasyAndFastGUI\\Icons\\bmp16\\color_picker.bmp");
//--- Crear un formulario
   if(!m_window3.CreateWindow(m_chart_id,m_subwin,caption_text,x,y))
      return(false);
//---
   return(true);
  }

y la parte OnEvent:

void CmyPanel_Test2::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {

   if(id==CHARTEVENT_CUSTOM+ON_CLICK_MENU_ITEM)
     {
      PRINT_EVENT(ON_CLICK_MENU_ITEM,id,lparam,dparam,sparam);
      return;
     }
//---
   if(id==CHARTEVENT_CUSTOM+ON_CLICK_BUTTON)
     {
     PRINT_EVENT(ON_CLICK_BUTTON,id,lparam,dparam,sparam);
     
     if(lparam==1 && dparam==1)
     {
      m_window3.Show();
      return;
     }
      return;
     }
//---
   if(id==CHARTEVENT_CUSTOM+ON_CLICK_CONTEXTMENU_ITEM)
     {
      if (dparam==0)
      m_window2.Show();
      PRINT_EVENT(ON_CLICK_CONTEXTMENU_ITEM,id,lparam,dparam,sparam);
      return;
     }

Gracias.

 
zlory73:

Hola,

Estoy intentando desarrollar mi propio panel de control siguiendo esta serie de artículos... Estoy interesado en la parte del modo multi-windows(Articulo04) pero he usado la Libreria14 actualizada(Articulo10).

Lo que tengo hasta ahora(en las fotos adjuntas):


¿Qué me perdí porque la ventana2 y window3 no se mueven, no se cierra cuando se pulsa los botones de cierre y el botón de colapso que falta ..

Aquí están las partes de código de las ventanas 2 y 3:

y la parte OnEvent:

Gracias.


Lo siento, modificado:

bool CmyPanel_Test2::CreateWindow3(const string caption_text)
  {
//--- Almacenar el puntero de la ventana
   CWndContainer::AddWindow(m_window3);
    m_window3.MainPointer(m_window);

y:

bool CmyPanel_Test2::CreateWindow2(const string caption_text)
  {
//--- Almacenar el puntero de la ventana
   CWndContainer::AddWindow(m_window2);
    m_window2.MainPointer(m_window);

todavía nada...

Por favor ayuda1

 
Artur Zas:

Técnicamente hablando, debería como OBJ-BITMAP_LABEL también está disponible en MQL4, pero tendría que ajustar el código de la biblioteca, ya que hay algunos lugares donde el código simplemente no compilar utilizando el compilador MQL4.

Intentaré jugar con la librería y te haré saber si soy capaz de portarla a MQL4. También puedes probar por ti mismo. Sólo cambia el nombre de la extensión .mq5 del EA de ejemplo a .mq4 e intenta compilar el código.

Obviamente, obtendrá errores de compilación sin embargo se puede comprobar dónde y lo que son.