Обсуждение статьи "Графические интерфейсы X: Текстовое поле ввода, слайдер картинок и простые элементы управления (build 5)" - страница 4

 
Artyom Trishkin:
Почему в текстовом поле ввода пустая строка не "", а " "? Долго не мог въехать почему проверка на пустую строку не работала...

Не знаю почему. Инициализируется пустой строкой (""). Можно убедиться в этом самостоятельно, заглянув в конструктор класса 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)

  {
//--- Сохраним имя класса элемента в базовом классе
   CElementBase::ClassName(CLASS_NAME);
//--- Установим приоритеты на нажатие левой кнопки мыши
   m_area_zorder  =1;
   m_label_zorder =0;
   m_edit_zorder  =2;
  }
 
Anatoli Kazharski:

Не знаю почему. Инициализируется пустой строкой (""). Можно убедиться в этом самостоятельно, заглянув в конструктор класса CTextEdit:

...

Да, смотрел. Потому и не мог понять почему там после инициализации не срабатывает условие проверки на "". Потом обратил внимание, что при постановке курсора внутрь поля ввода - там образуется широкое выделенное пространство - ровно на величину пробела (примерно так:  ). Проверил на " ", и всё заработало.
 
Pavel Kolchin:

выдает такую ошибку при подключении (работе это не мешает)

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 !

 пользуюсь этой версией библиотеки, меню в основном графике

в каком месте это подключается в файлах, не могу найти
 
Pavel Kolchin:
в каком месте это подключается в файлах, не могу найти

В главном файле MQL-приложения, которое Вы тестируете, удалите вот эту строчку:

//+------------------------------------------------------------------+
//|                                                TestLibrary05.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//--- Подключение индикатора для режима "Эксперт в подокне"
#resource "\\Indicators\\SubWindow.ex5"
 
Anatoli Kazharski:

В главном файле MQL-приложения, которое Вы тестируете, удалите вот эту строчку:

#resource "\\Indicators\\SubWindow.ex5"
в том то и дело что удалено
 
Pavel Kolchin:
в том то и дело что удалено

В файле Defines.mqh параметру EXPERT_IN_SUBWINDOW установите значение false:

//+------------------------------------------------------------------+
//|                                                      Defines.mqh |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
//--- Режим "Эксперт в окне"
#define EXPERT_IN_SUBWINDOW false
 
Anatoli Kazharski:

В файле Defines.mqh параметру EXPERT_IN_SUBWINDOW установите значение false:

 
Pavel Kolchin:
Отлично! ) 
 
Dear Anatoli, congratulations, your interface is very useful,easy and awsome. I adopted for my EAs and Indicators. Really thank you for all. Please, go on and on!
 
Есть какое то ограничение на количество символов в CTextLabel ? У меня не выводится весь текст который задаю m_text_label_Info.LabelText("...");
Причина обращения: