Discussão do artigo "Interfaces Gráficas X: Caixa de Edição de Texto, Slider de Imagens e Controles Simples (build 5)" - página 4

 
Artyom Trishkin:
Por que a string vazia no campo de entrada de texto não é "", mas " " "? Por muito tempo, não consegui descobrir por que a verificação de uma string vazia não funcionava....

Não sei por quê. Ele é inicializado com uma cadeia de caracteres vazia (""). Você mesmo pode se certificar disso procurando no construtor da classe CTextEdit:

//+------------------------------------------------------------------+
//| Construtor|
//+------------------------------------------------------------------+
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)

  {
//--- Salvar o nome da classe do elemento na classe base
   CElementBase::ClassName(CLASS_NAME);
//--- Definir prioridades para pressionar o botão esquerdo do mouse
   m_area_zorder  =1;
   m_label_zorder =0;
   m_edit_zorder  =2;
  }
 
Anatoli Kazharski:

Não sei por quê. Ele é inicializado com uma string vazia (""). Você pode ver por si mesmo observando o construtor da classe CTextEdit:

...

Sim, eu vi. É por isso que eu não conseguia entender por que a condição de verificação de "" não funciona após a inicialização. Então, notei que, quando o cursor é colocado dentro do campo de entrada, um espaço amplo é criado ali - exatamente do tamanho de um espaço (aproximadamente assim: ). Verifiquei se havia " " e tudo funcionou.
 
Pavel Kolchin:

apresenta este erro ao se conectar (ele não interfere no trabalho)

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 !

Estou usando esta versão da biblioteca, os menus estão nos gráficos principais.

Não consigo encontrar onde ele está conectado nos arquivos
 
Pavel Kolchin:
onde ele está conectado nos arquivos, não consigo encontrá-lo

No arquivo principal do aplicativo MQL que você está testando, exclua esta linha:

//+------------------------------------------------------------------+
//|TestLibrary05.mq5
//| Copyright 2016, MetaQuotes Software Corp.
//| http://www.mql5.com
//+------------------------------------------------------------------+
#property copyright "2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//--- Conexão do indicador para o modo "Especialista em subjanela
#resource "\\Indicators\\SubWindow.ex5"
 
Anatoli Kazharski:

No arquivo principal do aplicativo MQL que você está testando, exclua essa linha:

#resource "\\Indicators\\SubWindow.ex5"
Esse é o problema, ela foi excluída
 
Pavel Kolchin:
Esse é o problema, ele foi excluído

No arquivo Defines.mqh, defina o parâmetro EXPERT_IN_SUBWINDOW como false:

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

No arquivo Defines.mqh, defina o parâmetro EXPERT_IN_SUBWINDOW como false:

 
Pavel Kolchin:
Ótimo! )
 
Há algum motivo para o modo "expert in sub window" ter sido alterado para true como padrão em Defines.mqh?
//--- Modo "Expert in subwindow
#define EXPERT_IN_SUBWINDOW true

Isso causa erros quando o especialista não é usado na subjanela.
Alterei para false em Defines.mqh e tudo parece estar funcionando corretamente até agora.

 
Caro Anatoli, parabéns, sua interface é muito útil, fácil e incrível. Eu a adotei para meus EAs e indicadores. Agradeço muito a você por tudo. Por favor, continue assim!