Discusión sobre el artículo "Interfaces gráficas X: Campo de edición del texto, slider de imágenes y controles simples (build 5)" - página 4

 
Artyom Trishkin:
¿Por qué la cadena vacía en el campo de entrada de texto no es "" sino " " "? Durante mucho tiempo no pude averiguar por qué la comprobación de una cadena vacía no funcionaba.....

No sé por qué. Se inicializa con una cadena vacía (""). Puedes comprobarlo tú mismo mirando en el constructor de la clase CTextEdit:

//+------------------------------------------------------------------+
//| Constructor|
//+------------------------------------------------------------------+
CTextEdit::CTextEdit(void) : m_edit_value(""),
                             m_reset_mode(false),
                             m_show_text_pointer_mode(false),
                             m_align_mode(ALIGN_LEFT),
                             m_text_edit_state(true),
                             m_area_color(clrNONE),
                             m_icon_x_gap(0),
                             m_icon_y_gap(3),
                             m_icon_file_on(""),
                             m_icon_file_off(""),
                             m_label_text(""),
                             m_label_x_gap(0),
                             m_label_y_gap(4),
                             m_label_color(clrBlack),
                             m_label_color_hover(C'85,170,255'),
                             m_label_color_locked(clrSilver),
                             m_edit_y_size(20),
                             m_edit_x_gap(50),
                             m_edit_y_gap(0),
                             m_edit_color(clrWhite),
                             m_edit_color_locked(clrWhiteSmoke),
                             m_edit_text_color(clrBlack),
                             m_edit_text_color_locked(clrSilver),
                             m_edit_text_color_highlight(clrRed),
                             m_edit_border_color(clrSilver),
                             m_edit_border_color_hover(C'85,170,255'),
                             m_edit_border_color_locked(clrSilver)

  {
//--- Guardar el nombre de la clase de elemento en la clase base
   CElementBase::ClassName(CLASS_NAME);
//--- Establecer prioridades para pulsar el botón izquierdo del ratón
   m_area_zorder  =1;
   m_label_zorder =0;
   m_edit_zorder  =2;
  }
 
Anatoli Kazharski:

No sé por qué. Se inicializa con una cadena vacía (""). Puedes comprobarlo tú mismo mirando en el constructor de la clase CTextEdit:

...

Sí, así es. Por eso no entendía por qué la condición de comprobar "" no funciona después de la inicialización. Entonces me di cuenta de que cuando el cursor se coloca dentro del campo de entrada, se crea allí un espacio ancho - exactamente del tamaño de un espacio (aproximadamente así: ). Comprobé " " y todo funcionó.
 
Pavel Kolchin:

da este error al conectarse (no interfiere con el trabajo)

cannot load custom indicator 'C:\MetaTrader\MT5 demo\MQL5\Experts\new_menue_fc_1.00.ex5::Indicators\SubWindow.ex5' [4802]

CWndEvents::DetermineSubwindow > Ошибка при получении хэндла индикатора в директории ::Indicators\SubWindow.ex5 !

Estoy usando esta versión de la librería, los menús están en los gráficos principales.

donde se conecta en los archivos, no lo encuentro
 
Pavel Kolchin:
donde está conectado en los archivos, no puedo encontrarlo

En el archivo principal de la aplicación MQL que está probando, elimine esta línea:

//+------------------------------------------------------------------+
//|TestLibrary05.mq5
//| Copyright 2016, MetaQuotes Software Corp.
//| http://www.mql5.com
//+------------------------------------------------------------------+
#property copyright "2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//--- Conexión del indicador para el modo "Experto en subventana
#resource "\\Indicators\\SubWindow.ex5"
 
Anatoli Kazharski:

En el archivo principal de la aplicación MQL que estás probando, borra esta línea:

#resource "\\Indicators\\SubWindow.ex5"
Esa es la cosa, se elimina
 
Pavel Kolchin:
Esa es la cuestión, se borra

En el archivo Defines.mqh, establece el parámetro EXPERT_IN_SUBWINDOW en false:

//+------------------------------------------------------------------+
//|Define.mqh |
//| Copyright 2015, MetaQuotes Software Corp.
//| http://www.mql5.com
//+------------------------------------------------------------------+
//--- Experto en modo ventana
#define EXPERT_IN_SUBWINDOW false
 
Anatoli Kazharski:

En el archivo Defines.mqh, establece el parámetro EXPERT_IN_SUBWINDOW en false:

 
Pavel Kolchin:
¡Qué bien! )
 
¿Hay alguna razón para que el modo "experto en subventana" haya cambiado a true por defecto en Defines.mqh?
//--- Modo "Experto en subventana
#define EXPERT_IN_SUBWINDOW true

Esto causa errores cuando el experto no se utiliza en la ventana secundaria.
He cambiado a false en Defines.mqh y todo parece funcionar correctamente hasta ahora.

 
Estimado Anatoli, felicitaciones, su interfaz es muy útil, fácil y awsome. He adoptado para mi EAs e indicadores. Realmente gracias por todo. ¡Por favor, seguir y seguir!