Обсуждение статьи "Как создать графическую панель любой сложности и как это работает" - страница 13

 

Здравствуйте!

Подскажите пожалуйста, почему ваша панель прекрасно работает на реальном графике, но не работает в тестере стратегий?

То есть события нажатий кнопок, к примеру, не обрабатываются.

Как исправить?

Заранее спасибо!

 
Панель лучше использовать из другого языка на мт5 будет чисто зависеть от терминала и графика
 
Vitaliy Davydov #:

Здравствуйте!

Подскажите пожалуйста, почему ваша панель прекрасно работает на реальном графике, но не работает в тестере стратегий?

То есть события нажатий кнопок, к примеру, не обрабатываются.

Как исправить?

Заранее спасибо!

Пару лет назад выкладывал работающее решение с кнопками. Но поля Edit в тестере МТ5 не работают. Хотя можно добавить рядом с полем Edit маленькие кнопки +/- и править через них. Но там свои нюансы будут.
 
ON_MOUSE_FOCUS_KILL судя по всему никак не используется. При добавлении в Map ничего не происходит. Так же можно закомментировать ON_MOUSE_FOCUS_KILL и компилятор пропустит. 
 

Зравствуйте!

Создаю панель унаследованную от CDialog (либо от CWndContainer, без разницы).

Если создаю в основном окне графика, то все работает - панель перемещается мышью и закрывается кнопкой закрытия.

Если же создаю панель в подокне, то не работает ничего - панель неподвижна, на кнопку закрытия не реагирует.

Вопрос - как заставить панель нормально реагировать на события графика  в подокне?

 

Здравствуйте, мне удалось успешно сделать свою панель. Большое спасибо за ваш замечательный учебник.

 
Vasiliy Pushkaryov #:
Пару лет назад выкладывал работающее решение с кнопками. Но поля Edit в тестере МТ5 не работают. Хотя можно добавить рядом с полем Edit маленькие кнопки +/- и править через них. Но там свои нюансы будут.

Добрый день!

Спасибо, разобрался.

Теперь другие проблемы - все эти панели из стандартной библиотеки,

абсолютно нефункциональны в тестере МТ4 в режиме визуализации тестирования.

Есть какое-нибудь глобальное решение данной проблемы, чтобы не устраивать пляски с бубном по каждому контролу?

 
Vitaliy Davydov #:

Добрый день!

Спасибо, разобрался.

Теперь другие проблемы - все эти панели из стандартной библиотеки,

абсолютно нефункциональны в тестере МТ4 в режиме визуализации тестирования.

Есть какое-нибудь глобальное решение данной проблемы, чтобы не устраивать пляски с бубном по каждому контролу?

Что значит не функциональны? У меня в тестере МТ4 они свои функции выполняют.

Приводил пример, когда унаследовался от CButton и добавил туда функцию cMyButton::isButtonPushed() для работы с тестером.

Тоже самое я себе сделал для CEdit, CCheckBox и использую потом всегда своих наследников. Это разовая работа.

В файле TestPush был образец функции checkPushingButttons() :

void OnTick()
{
    if(MQLInfoInteger(MQL_VISUAL_MODE)) ExtDialog.checkPushingButttons();
}

//+------------------------------------------------------------------------------------------------------------------+
//| Для тестера и OnTick. Проверим нажатие кнопки (или объекта)
//+------------------------------------------------------------------------------------------------------------------+
void CAppWindowCorrectMinimization::checkPushingButttons()
{
   if(m_button1.isButtonPushed())    print1();
   if(m_button2.isButtonPushed())    print2();
}


Вот из моего работающего кода:

//+------------------------------------------------------------------------------------------------------------------+
//| Для тестера и OnTick. Проверим нажатие кнопки (или объекта)
//+------------------------------------------------------------------------------------------------------------------+
void cInterface::checkPushingButttons()
{
  if(btnOnOff.isButtonPushed())    OnClickOnOff();
  if(btnLong.isButtonPushed())     OnClickLong();
  if(btnShort.isButtonPushed())    OnClickShort();

  if(btnCloseOff.isButtonPushed()) OnClickCloseOff();
  if(btnProtocol.isButtonPushed()) OnClickProtocol();
  if(btnOpposMA6.isButtonPushed()) OnClickOpposMA6();

  if(editMA2plus.isEditChanged())  OnEditMA2plus();
  if(editPunct.isEditChanged())    OnEditPuncture();

Т.е. в конце концов разница с работой без тестера и в тестере сводится к добавлению одной функции checkPushingButttons(), где на каждый контрол добавим строку, и проверим через тик нажатие или ввод.

Подготовьте шаблоны, пару раз сделаете, думаю, потом привыкнете.

 

Здравствуйте Владимир,
Прежде всего, я хотел бы поблагодарить вас за ваш замечательный учебник. Я обнаружил проблему при использовании его в шаблоне: Просто поместите любое из ваших приложений в шаблон пустого графика. После загрузки этого шаблона приложение появляется дважды, как показано на картинке. Есть ли у вас идеи, как это исправить?

Заранее спасибо

Файлы:
 

Почему панель/окно нельзя перетащить/переместить за границы графика?

В чем разница с библиотекой easyfastgui Анатолия?