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

 

Buenas noches.

Mouse.mqh.

//+------------------------------------------------------------------+
//| Comprueba si el estado del botón izquierdo del ratón ha cambiado.
//+------------------------------------------------------------------+
bool CMouse::CheckChangeLeftButtonState(const string mouse_state)
  {
   bool left_button_state=(bool)int(mouse_state);
//--- Enviar un mensaje sobre el cambio de estado del botón izquierdo del ratón
   if(m_left_button_state!=left_button_state)
      ::EventChartCustom(m_chart.ChartId(),ON_CHANGE_MOUSE_LEFT_BUTTON,0,0.0,"");
//--- Devuelve el estado actual del botón izquierdo del ratón
   return(left_button_state);
  }
//+------------------------------------------------------------------+

Aquí pasamos sparam y, según tengo entendido, cualquier valor distinto de cero se trata como un botón del ratón pulsado. Pero los valores distintos de cero los dan todos los botones del ratón, más Shift y Control al menos.

¿Es esta la forma en que se pretende?

 
Oleksii Chepurnyi:

Buenas noches.

Mouse.mqh

Aquí pasamos sparam y, según tengo entendido, cualquier valor distinto de cero se trata como un botón del ratón pulsado. Pero los valores distintos de cero los dan todos los botones del ratón, más Shift y Control al menos.

¿Es así como se pretendía?

No, era sólo una solución temporal para mis tareas personalizadas.

Ni siquiera parece ser utilizado en cualquier parte de la biblioteca en este momento. Se puede refinar si es necesario.

 
Anatoli Kazharski:

No, sólo era una solución temporal para mis tareas personalizadas.

Ni siquiera parece ser utilizado en cualquier parte de la biblioteca en absoluto en este momento. Se puede perfeccionar si es necesario.

Se utiliza muy a menudo :) Por ejemplo, arrastre de ventanas, deslizamiento rápido de SpinEdit. En cualquier lugar donde se compruebe el estado del LKM.

Lo hice así

//+------------------------------------------------------------------+
//| Comprueba si el estado del botón izquierdo del ratón ha cambiado.
//+------------------------------------------------------------------+
bool CMouse::CheckChangeLeftButtonState(const string mouse_state)
  {
   bool left_button_state=((int)mouse_state==1);
//--- Enviar un mensaje sobre el cambio de estado del botón izquierdo del ratón
   if(m_left_button_state!=left_button_state)
      ::EventChartCustom(m_chart.ChartId(),ON_CHANGE_MOUSE_LEFT_BUTTON,0,0.0,"");
//--- Devuelve el estado actual del botón izquierdo del ratón
   return(left_button_state);
  }
//+------------------------------------------------------------------+
 
Anatoli Kazharski:

No, sólo era una solución temporal para mis tareas personalizadas.

Ni siquiera parece ser utilizado en cualquier parte de la biblioteca en absoluto en este momento. Puede ser refinado si es necesario.

En la última versión - https://www.mql5.com/es/code/19703

no se puede añadir

 //CCanvasTable m_canvastable;

¡El problema parece ser que estoy mirando ejemplos en versiones antiguas!


class CProgram : public CWndEvents
  {
protected:
   //--- Contadores de tiempo
   CTimeCounter      m_counter1; // para actualizar el proceso de ejecución
   CTimeCounter      m_counter2; // para actualizar los elementos de la barra de estado
   //--- Ventana principal
   CWindow           m_window;
   //--- Imagen
   CPicture          m_picture1;
   
   //--- Menú principal y sus menús contextuales
   CMenuBar          m_menubar;
   CContextMenu      m_mb_contextmenu1;

   //--- Tabla de dibujo
   //CCanvasTable m_canvastable;
   
   //--- Cadena de estado
   CStatusBar        m_status_bar;

 
 

 
EasyAndFastGUI - библиотека для создания графических интерфейсов
EasyAndFastGUI - библиотека для создания графических интерфейсов
  • www.mql5.com
Библиотека EasyAndFastGUI дает возможность создавать графические интерфейсы для своих MQL-программ.
 
Yuriy Zaytsev:

En la última versión - https://www.mql5.com/es/code/19703

falla al añadir

El problema parece ser que estoy mirando ejemplos de versiones anteriores.


¡Tengo la versión Build 10 , https://www.mql5.com/es/articles/3042 funciona allí!

Tuve que hacer algo como esto, que no es bueno.

MQL5\Include\EasyAndFastGUI_B10

MQL5/Include/EasyAndFastGUI_B16

Графические интерфейсы X: Обновления для нарисованной таблицы и оптимизация кода (build 10)
Графические интерфейсы X: Обновления для нарисованной таблицы и оптимизация кода (build 10)
  • www.mql5.com
О том, для чего предназначена эта библиотека, более подробно можно прочитать в самой первой статье: Графические интерфейсы I: Подготовка структуры библиотеки (Глава 1). В конце статей каждой части представлен список глав со ссылками. Там же есть возможность загрузить к себе на компьютер полную версию библиотеки на текущей стадии разработки...
 

¡Maravillosa biblioteca!

Hice un indicador simple pero útil para MICEX.

Share, % de crecimiento para el día, a continuación, los datos estándar, los volúmenes a comprar desde el comienzo del día BuyVol, los volúmenes a vender SellVol, VolDelta diferencia en los volúmenes desde el comienzo del día, voy a terminar el % de la diferencia actual en los volúmenes.

delta verde - es deseable mantener la compra, o tratar de buscar un punto de entrada de compra, etc.



 
Yuriy Zaytsev:

Tengo la versión Build 10, https://www.mql5.com/es/articles/3042 funciona.

Tuve que hacer algo como esto, que no es bueno.

MQL5\Include\EasyAndFastGUI_B10

MQL5\Include\EasyAndFastGUI_B16.

Gracias por el mensaje. De momento no tengo tiempo. Veré un poco más tarde cual puede ser el problema.

 
Yuriy Zaytsev:

Tengo la versión Build 10, https://www.mql5.com/es/articles/3042 funciona.

Tuve que hacer algo como esto, que no es bueno.

MQL5\Include\EasyAndFastGUI_B10

MQL5/Include/EasyAndFastGUI_B16

Una vez que la biblioteca fue muy rediseñado, no recuerdo el número de compilación. Lo más probable es que no haya CCanvasTable en las nuevas builds :)

En las conclusiones en los artículos hay un esquema general de la librería en el momento del release, puedes comparar.

 
hola

¿No es posible colorear una columna utilizando la función de tabla?


Si añades dos indicadores.

La función cerrar ventana cierra dos ventanas.
La función recoger ventana recoge dos ventanas.
Muchas gracias por su ayuda.

Soy de Brasil, utilicé un traductor para escribir. Pido disculpas por cualquier error en este idioma.


 
Hola amigos
He realizado los siguientes cambios

En el archivo Table.mqh

      string            m_header_text;    // Texto de cabecera de columna
      color             m_header_color;   // Color del texto de cabecera de columna //André
      CTCell            m_rows[];         // Matriz de las filas de la tabla

----------------------------------------------------------------------------------------------------------------------
   void              HeadersColorPressed(const color clr)    { m_headers_color_pressed=clr;      }
   //void CabecerasTextoColor(const color clr){ m_headers_text_color=clr; } //André

----------------------------------------------------------------------------------------------------------
   void              SetHeaderText(const uint column_index,const string value);
   //--- Ajuste del color del texto a la cabecera especificada //André
   void              HeadersTextColor(const color &array[]);
--------------------------------------------------------------------------------------------------------------------
//André 
//+------------------------------------------------------------------+
//| Rellena el array de modos de alineación de texto ||
//+------------------------------------------------------------------+
void CTable::HeadersTextColor(const color &array[])
  {
   int total=0;
//--- Dejar, si se pasó un array de tamaño cero
   if((total=CheckArraySize(array))==WRONG_VALUE)
      return;
//--- Almacena el valor en el array
   for(int c=0; c<total; c++)
      m_columns[c].m_header_color=array[c];
  }
------------------------------------------------------------------------------------------------------------------------
      //André
      //--- Color del texto
      uint clr=::ColorToARGB(m_columns[c].m_header_color);

En el archivo Window.mqh

//--- Manejar el incluso de hacer clic en los botones del formulario
   if(id==CHARTEVENT_CUSTOM+ON_CLICK_BUTTON)
     {
      //André
      if(StringFind(sparam, CElementBase::ProgramName(), 0)<0)
         return;
      //--- Cerrar la ventana
-------------------------------------------------------------------------------
   int subwin=(CElementBase::ProgramType()==PROGRAM_INDICATOR)? ::ChartWindowFind() : m_subwin;
//--- Enviar un mensaje al respecto
   //André
   //Print(__FUNCTION__, " " ", subwin, " ", NOMBRE_PROGRAMA);
   //::EventChartCustom(m_chart_id,ON_WINDOW_COLLAPSE,CElementBase::Id(),subwin,"");
   ::EventChartCustom(m_chart_id,ON_WINDOW_COLLAPSE,CElementBase::Id(),subwin, PROGRAM_NAME);
//--- Enviar un mensaje sobre el cambio en la interfaz gráfica
   ::EventChartCustom(m_chart_id,ON_CHANGE_GUI,CElementBase::Id(),0.0,"");
  }
---------------------------------------------------------------------------------------
   int subwin=(CElementBase::ProgramType()==PROGRAM_INDICATOR)? ::ChartWindowFind() : m_subwin;
//--- Enviar un mensaje al respecto
   //André
   //::EventChartCustom(m_chart_id,ON_WINDOW_EXPAND,CElementBase::Id(),subwin,"");
   ::EventChartCustom(m_chart_id,ON_WINDOW_EXPAND,CElementBase::Id(),subwin,PROGRAM_NAME);
//--- Enviar un mensaje sobre el cambio en la interfaz gráfica
   ::EventChartCustom(m_chart_id,ON_CHANGE_GUI,CElementBase::Id(),0.0,"");

En el archivo WndEvents.mqh.

      return(false);
//--- Si el identificador de ventana y el número de subventana coinciden
   //André
   if(m_sparam!=m_windows[0].ProgramName()) 
      return(false);
   if(m_lparam==m_windows[0].Id() && (int)m_dparam==m_subwin)


He comentado las líneas con mi nombre para facilitar la localización

Adjunto los archivos con el código completo modificado.

Espero que os haya servido de ayuda

Archivos adjuntos:
WndEvents.mqh  144 kb
Window.mqh  129 kb
Table.mqh  304 kb