Обсуждение статьи "Как быстро добавить панель управления к индикатору и советнику" - страница 3

 
Evgeny Potapov:

Спасибо!

Сейчас с CDialog попробую, но я всё равно не понял как это должно работать: ведь кнопка становится видна сразу после создания, она что, должна исчезнуть и перепрыгнуть в CDialog?

Используйте режим пошаговой (F11) отладки с использованием точек останова и всё скрытое станет явью.
 
Evgeny Potapov:

Спасибо!

Сейчас с CDialog попробую, но я всё равно не понял как это должно работать: ведь кнопка становится видна сразу после создания, она что, должна исчезнуть и перепрыгнуть в CDialog?

Karputov Vladimir:

На примере файла PanelDialog2.mqh из статьи:

Этот файл создаёт элементы для панели диалогов. Признак панели - это класс CDialog.

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

int OnInit()  {
   MyButton = new CButton;
   if(CheckPointer(MyButton) == POINTER_INVALID) return(INIT_FAILED);
   MyDialog = new CDialog();
   if(CheckPointer(MyDialog) == POINTER_INVALID) return(INIT_FAILED);
   MyDialog.Create(ChartID(),WindowExpertName()+"_dailog",0,50,100,150,250);
   MyDialog.Add(MyButton);
   MyButton.Create(ChartID(),WindowExpertName()+"_button",0,70,120,90,190);
   MyDialog.Show();
   MyDialog.Enable();
   return(INIT_SUCCEEDED);
}
 
Vladimir Karputov:

не подскажите как можно отключить обработку все событий или кликов на кнопки на какое то время (например на время открытия или закрытия позиций) ? 
 
Subscribers:
не подскажите как можно отключить обработку все событий или кликов на кнопки на какое то время (например на время открытия или закрытия позиций) ? 
А более предметно? У Вас вопрос по кодам из этой статьи?
 
Vladimir Karputov:
А более предметно? У Вас вопрос по кодам из этой статьи?

не обязательно по этой статье... просто нигде не могу найти. К примеру... в статье есть подписка на обработку событий кнопки

 

EVENT_MAP_BEGIN(CControlsDialog)
...
ON_EVENT(ON_CLICK,m_button_ok,OnClickButtonOK)
EVENT_MAP_END(CAppDialog)

 Вопрос: как можно отключить эту обработку программно (запретить обработку ON_CLICK) и включить снова ? 

 
Subscribers:

не обязательно по этой статье... просто нигде не могу найти. К примеру... в статье есть подписка на обработку событий кнопки

 

EVENT_MAP_BEGIN(CControlsDialog)
...
ON_EVENT(ON_CLICK,m_button_ok,OnClickButtonOK)
EVENT_MAP_END(CAppDialog)

 Вопрос: как можно отключить эту обработку программно (запретить обработку ON_CLICK) и включить снова ? 

Запретить никак, но можно прописать в функции обработки клика проверку флага - если флаг true - значит обрабатываем нажатия, а если флаг false - значит выходим из функции.
 
Vladimir Karputov:
Запретить никак, но можно прописать в функции обработки клика проверку флага - если флаг true - значит обрабатываем нажатия, а если флаг false - значит выходим из функции.
это уже сделал... не все ровно не то... например когда у меня закрывается много ордеров по нажатию кнопки на панели хочу что-бы панелька полностью не отвечала, а то если кликнуть (в это время) на кнопку бай, то ивент все-ровно будет, и будет вход в обработчик ивента после того когда отработает закрытие
 
Vladimir Karputov:
Запретить никак, но можно прописать в функции обработки клика проверку флага - если флаг true - значит обрабатываем нажатия, а если флаг false - значит выходим из функции.
вообщем никак нельзя сделать панель не активной ?
 
Subscribers:
это уже сделал... не все ровно не то... например когда у меня закрывается много ордеров по нажатию кнопки на панели хочу что-бы панелька полностью не отвечала, а то если кликнуть (в это время) на кнопку бай, то ивент все-ровно будет, и будет вход в обработчик ивента после того когда отработает закрытие

Сделайте правильно - обработку запретного флага сразу по входу в функцию.

Хотя... Минутку... 

Добавлено:

Нет. Нужно просто обрабатывать нажатие в зависимости от запрещающего флага. 

 
Vladimir Karputov:

Сделайте правильно - обработку запретного флага сразу по входу в функцию.

Хотя... Минутку... 

Добавлено:

Нет. Нужно просто обрабатывать нажатие в зависимости от запрещающего флага. 

я Вас понял, спасибо 
Причина обращения: