Работа с формамой CAppDialog + CButton

 

Приветствую коллеги!

Считаю, что хорошо разбираюсь в программировании на MQL. Пишу на нем уже более 2 лет. Учился сам. Область специализации: облегчение работы трейдера с помощью панели для работы с графическими объектами, управление вот-листом, горячими клавишами и инструментами для управления позицией. Разработал большой проект на MQL4+ООП, включая совместную работу двух индикаторов и советника.


Сейчас переписываю свой проект на MQL5 и хочу использовать CAppDialog, чтобы сделать на этот раз интерфейс по-красивее. 


Создаю кнопки, размещаю на форме. Проблемы:

1. Как только начинаю перемещать кнопку по форме (Shift-ом или Move-ом или Top-ом) (разные режимы интерфейса) - кнопка отвязывается от формы и перестаёт работать. Почему она отвязывается? Как этого избежать? Передобавление ее на форму Add-ом не помогает.

2. Если создаю массив кнопок, привязанных к форме - не удаётся ими управлять (скрывать / показывать). 


В старом проекте на MQL4 я использовал CButton только там я их ни к чему не привязывал, они у меня в воздухе висели, формы не было и все было ОК. А тут при встраивании их в форму начинаются какие-то странные проблемы. Я явно не учитываю какие-то грабли. Но замучатся их сам искать. На форумах ответа не нашёл.


Есть ли у вас идеи что я могу упускать?


С уважением,

Евгений

 
А статьи читали?
 
Alexey Viktorov:
А статьи читали?

@Alexey Viktorov, да прочёл статью про создание интерфейсов на основании этой панели. Там ничего про передвижение кнопок не было. Также ничего про создание массива из кнопок, чтобы управлять ими через массив. То что в статье - понятно и все работает. Также прочитал сагу про создание своей библиотеки интерфейсов Анатолия Кажарского, уже было построил интерфейс на этой библиотеке. Но потом упёрся в ограничения производительности, а также другие проблемы. Поэтому решил попробовать стандартную библиотеку. Но и тут вот какие-то грабли...

есть ли идеи? 

 
Yevgen Drumachyk:


Запустите пример и покликайте по первой кнопке ...

Пример создан на основе справки CButton и внесено единственное изменение:

//+------------------------------------------------------------------+
//| Event handler                                                    |
//+------------------------------------------------------------------+
void CControlsDialog::OnClickButton1(void)
  {
   Comment(__FUNCTION__);
   m_button1.Shift(1,1);
  }
Документация по MQL5: Стандартная библиотека / Панели и диалоги / CButton
Документация по MQL5: Стандартная библиотека / Панели и диалоги / CButton
  • www.mql5.com
CButton - Панели и диалоги - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Файлы:
 
Vladimir Karputov:

Запустите пример и покликайте по первой кнопке ...

Пример создан на основе справки CButton и внесено единственное изменение:

@Vladimir Karputov, уверен - так будет работать. Проблема возникает когда такую кнопку добавляешь на форму CAppDialog методом Add, а потом когда пытаешься ее двигать - она отваливается от формы и перестаёт адекватно работать. 

Вопрос: как сделать так чтобы кнопка продолжала работать даже после манипуляций с ней на форме типа Shift или Move? Что происходит с констроллом формы такого при выполнении Shift, что этот контрол перестаёт нормально работать?

 
Yevgen Drumachyk:

@Vladimir Karputov, уверен - так будет работать. Проблема возникает когда такую кнопку добавляешь на форму CAppDialog методом Add, а потом когда пытаешься ее двигать - она отваливается от формы и перестаёт адекватно работать. 

Вопрос: как сделать так чтобы кнопка продолжала работать даже после манипуляций с ней на форме типа Shift или Move? Что происходит с констроллом формы такого при выполнении Shift, что этот контрол перестаёт нормально работать?

Вы код смотрели? Я по Вашему клеем кнопку приклеивал или все-таки использовал метол Add?

 
Vladimir Karputov:

Вы код смотрели? Я по Вашему клеем кнопку приклеивал или все-таки использовал метол Add?


Я понял. Сорри! Сейчас попробую эмулировать проблему на чистом проекте...

 
Yevgen Drumachyk:


Я понял. Сорри! Сейчас попробую эмулировать проблему на чистом проекте...

Скомпилировал. Действительно работает... Тогда не понятно почему именно у меня кнопка отваливается...

 
Yevgen Drumachyk:

Скомпилировал. Действительно работает... Тогда не понятно почему именно у меня кнопка отваливается...

Сахарок не пробовали в угол комнаты сыпать?

Причина обращения: