На данный момент библиотека заточена под одну панель на графике.
Если попытаться влепить 2, то некорректно отлавливаются события - у элементов одинаковые Id, а родительский Id не проверяется.
Для проверки взял демонстрационный Controls.mq5 и продублировал панель - все события дублируются на обе панели, хотя не должны.
CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))использовать что то вроде
ObjCAppDialog.Create(chart,name,subwin,x1,y1,x2,y2))?
В пункте "Наполняем панель индикации" можно вместо использовать что то вроде ?
Доброго дня, может подскажите что сделать.
Ваш пример експерт Controls.
При переключении на другой период эксперт выгружается, пробовал убрать ExtDialog.Destroy(reason); в OnDeinit().
Подскажите что необходимо сделать, что бы окно диалога продолжало работать при переходе на другие периоды.
- www.mql5.com
Доброго дня, может подскажите что сделать.
Ваш пример експерт Controls.
При переключении на другой период эксперт выгружается, пробовал убрать ExtDialog.Destroy(reason); в OnDeinit().
Подскажите что необходимо сделать, что бы окно диалога продолжало работать при переходе на другие периоды.
ИМХО, я считаю что легче создать библиотеки собственноручно, чтобы знать что где и как нужно использовать или исправить если что не так.
Пример написания панели без использования стандартных классов.: VirtualTradePad PositionsStyle
Обратил внимание что в библиотеке пользовательских графический интерфейсов (панелей) копируется не совсем удачная на мой взгляд событийная модель:
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { ... }
Во первых, далеко не все события имеют набор переменных соответствующих int, long, double и string. Где-то переменных описывающих событие может быть больше, где-то меньше, где-то они не совпадают с предложенными базовыми типами. По факту мы видим постоянную конвертацию вроде int -> bool, string -> int, double -> int и т.д. И если с точки зрения процедурного программирования практически ничего сделать нельзя (ведь не будешь создавать 1 000 000 перегруженных функций для каждого гипотетического случая), то в рамках ООП все можно сделать гораздо проще и изящней.
Но главная проблема OnEvent в том, что этот обработчик событий призван обрабатывать события получаемые с графика, в то время как событие может быть каким угодно, например открытие новой позиции, или изменение котировок. В общем OnEvent(...) как-то выглядит не достаточно универсальным обработчиком событий, ИМХО. Возможно разработчики как-то приловчились обрабатывать свои собственные события на базе существующего CWnd , но для меня использования стандартной библиотеки панелей видится пока проблемным.
- 2010.11.10
- Samuel
- www.mql5.com
спасибо, изучил, полезно! несколько моментов: планируется ли создание какого-нибудь конструктора, что бы панели можно было собирать в конструкоторе форм как в VS? т.к. считать всё руками как-то не совсем удобно, может это и ялвяется признаком профессионализма, НО долго ))
с макросами явно перемудрили...
Хотел все, так сказать, методом тыка на примере Controls.mq5 изучить. Уже и так и сяк пытался поменять название кнопок.
if(!m_button2.Create(m_chart_id,m_name+"Button2222",m_subwin,x1,y1,x2,y2)) return(false); if(!m_button2.Text("Buy")) return(false);
Пытался поменять вывод в m_Edit, менял #define BUTTON_WIDTH . Перезагружал терминал, обновлял скрипты в навигаторе.
void CControlsDialog::OnClickButton3(void) { if(m_button3.Pressed()) m_edit.Text(__FUNCTION__+"Test"); else m_edit.Text(__FUNCTION__+"I td");
Но ничего не помогает. При разных изменениях вид советника вообще не изменяется. Подскажите в чем проблема, пожалуйста
предложение на будующее... сделать класс (объект) "выпадающий календарь"
так есть уже такой - CDatePicker, см. в стандартной библиотеке
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Создай свои графические панели на MQL5:
Автор: MetaQuotes