Librerías: EasyAndFastGUI - librería para crear interfaces gráficas - página 9

 
EasyAndFast GUI error

MT4 Versión.

Experts\Article09\TestLibrary03

La Edición siempre parpadea.

Anatoli Kazharski Por favor, ayudar a resolver este error.

https://www.mql5.com/en/forum/274301


EasyAndFast GUI bug
EasyAndFast GUI bug
  • 2018.08.20
  • www.mql5.com
I download the library of the last MT4 version https://www.mql5.com/en/code/19703 Experts\Article09\TestLibrary03 The Edit is always flickering...
 
Oleksii Chepurnyi:

Buenas tardes.

Un problema mayor :)

Crear un objeto dinámico, por ejemplo una etiqueta

...

No he probado la biblioteca para la creación de objetos dinámicos, así que no puedo darte ningún consejo ahora.

 

Otro ejemplo de una aplicación cuya GUI se crea utilizando esta biblioteca:


 
greentreen:

MT4 Versión.

Lamentablemente no puedo ayudar ahora, porque ya no funcionaba para MT4. Esta versión de la biblioteca ha sido probado sólo en el MT5.

 
Anatoli Kazharski:

No he probado la librería para la creación dinámica de objetos, así que no puedo aconsejarte ahora mismo.

Eso pensaba :)

Para objetos simples escribí esto:

//+------------------------------------------------------------------+
//|| Elimina un puntero de la matriz de elementos ||
//+------------------------------------------------------------------+
void CWndContainer::DeleteElementsFromArray(const int window_index,const int id)
  {
   int windows_total=::ArraySize(m_windows);
//--- Si no hay formularios para controles en la base de datos
   if(windows_total<1)
     {
      ::Print(__FUNCTION__,"> No hay una sola forma".);
      return;
     }
//--- Si la solicitud es para un formulario inexistente
   if(window_index>=windows_total)
     {
      ::Print(PREVENTING_OUT_OF_RANGE," window_index: ",window_index,"; windows total: ",windows_total);
      return;
     }
//--- Eliminar elementos de la matriz común
   DeleteElement(id,m_wnd[window_index].m_elements);
//--- Eliminar los elementos principales de la matriz
   DeleteElement(id,m_wnd[window_index].m_main_elements);
//--- 
   DeleteElement(id,m_wnd[window_index].m_timer_elements);
//--- 
   DeleteElement(id,m_wnd[window_index].m_available_elements);
//--- 
   DeleteElement(id,m_wnd[window_index].m_auto_x_resize_elements);
//--- 
   DeleteElement(id,m_wnd[window_index].m_auto_y_resize_elements);
  }
//+------------------------------------------------------------------+
//|| Elimina un puntero de la matriz de elementos ||
//+------------------------------------------------------------------+
template<typename T>
void CWndContainer::DeleteElement(const int id,T &array[])
  {
   bool del=false;
   for(int i=0;i<ArraySize(array);i++)
     {
      if(del)
        {
         if(i==ArraySize(array)-1) break;
         array[i] = array[i+1];
         continue;
        }
      if(array[i].Id()==id)
        {
         del=true;
         if(i==ArraySize(array)-1) break;
         array[i] = array[i+1];
        }
     }
   if(del) ArrayResize(array,ArraySize(array)-1,RESERVE_SIZE_ARRAY);
  }
//+------------------------------------------------------------------+
 

Me podeis decir, en la tabla el botón con una imagen se añade solo a la primera columna, y en el resto no funciona.

¿Es un bug o no?

 
Vladimir Ananich:

En la tabla, el botón con una imagen se añade sólo a la primera columna, y en el resto no funciona.

Se puede añadir a todas ellas.

 
Anatoli Kazharski:

Se puede añadir a todo.

Gracias, lo he solucionado.

Pero extrañamente, si la alineación en la celda se establece en el centro o la derecha, la imagen no es visible.

Si la alineación es a la izquierda, funciona bien.

 
Vladimir Ananich:

Gracias, ya lo tengo.

Pero extrañamente, si la alineación en la celda se establece en el centro o en el borde derecho, la imagen no es visible.

Si está en el borde izquierdo, funciona bien.

Sí, ahora existe esa restricción (sólo borde izquierdo).