Вопросы по ООП в MQL5 - страница 15

 
Vasiliy Pushkaryov:

Извиняюсь за дезинформацию, ранее писал, что нельзя в дочернем классе вызвать метод Create().

Сейчас перепроверил, можно. Но доступ к private-члену m_button был недоступен. Т.е. нельзя было проверить, например, состояние кнопки: нажата/отжата.

С подсказкой Игоря теперь можно.

с баттонами там нет проблем, не помню, но у этого класса были готовые методы ( не поля ) - для определения состояния, если нет, то проверьте IsActive() или PropFlags() или StateFlags() - там точно что было готового, чтобы узнать что с кнопкой сейчас

ну и расскажу уж второй хак с графикой в MQL - Вы можете узнать имя кнопки ( Name() ) и по имени кнопки найти ее и получить состояние через ObjectGetInteger() и пр. ф-ций, но чтобы не делать это "топорно" - напишите в своем классе свой метод для получения свойств через ObjectGetInteger()


воткактоттак!  ;)

PS: я со СБ тоже мучался - не мог найти почему чекбоксы после сворачивания панели и разворачивания панели становятся выделенными - как будто клик мышей был по обьекту.. поняв, что не хочу СБ всю перечитывать - сделал свой обработчик который после разворачивания формы устанавливал через ObjectSetInteger() свойство снять выделение обьекта для моих чекбоксов

 
Igor Makanu:

с баттонами там нет проблем, не помню, но у этого класса были готовые методы ( не поля ) - для определения состояния, если нет, то проверьте IsActive() или PropFlags() или StateFlags() - там точно что было готового, чтобы узнать что с кнопкой сейчас

ну и расскажу уж второй хак с графикой в MQL - Вы можете узнать имя кнопки ( Name() ) и по имени кнопки найти ее и получить состояние через ObjectGetInteger() и пр. ф-ций, но чтобы не делать это "топорно" - напишите в своем классе свой метод для получения свойств через ObjectGetInteger()

воткактоттак!  ;)

PS: я со СБ тоже мучался - не мог найти почему чекбоксы после сворачивания панели и разворачивания панели становятся выделенными - как будто клик мышей был по обьекту.. поняв, что не хочу СБ всю перечитывать - сделал свой обработчик который после разворачивания формы устанавливал через ObjectSetInteger() свойство снять выделение обьекта для моих чекбоксов

С этим я сталкивался тоже. Нужно было диалоговую панель из СБ в свои цвета раскрасить. Они тоже оказались спрятаны в private секции. Как раз и выкрутился методом, который через ObjectGetInteger() напрямую красил панели. И тоже после сворачивания и разворачивания была неприятность.

Так заголовок выглядит до первого сворачивания:


А так после


Почему на кнопках закрытия и сворачивания потом возвращается умолчательный цвет, тоже в дебрях СБ не смог найти.

 
Vasiliy Pushkaryov:

С этим я сталкивался тоже. Нужно было диалоговую панель из СБ в свои цвета раскрасить. Они тоже оказались спрятаны в private секции. Как раз и выкрутился методом, который через ObjectGetInteger() напрямую красил панели. И тоже после сворачивания и разворачивания была неприятность.

Так заголовок выглядит до первого сворачивания:


А так после


Почему на кнопках закрытия и сворачивания потом возвращается умолчательный цвет, тоже в дебрях СБ не смог найти.

Посмотрел я в очередной раз на местный std и убедился в правильности решения написания своей библиотеки)))
 
Vladimir Simakov:
Посмотрел я в очередной раз на местный std и убедился в правильности решения написания своей библиотеки)))

Я вот здесь писал момент с кнопками, выдержка оттуда:

пока кнопку нажимаешь медленно, примерно раз в секунду, все работает хорошо. Начинаю нажимать чуть быстрее и часто не перехватывается событие.

В Вашей библиотеке замечали такие проблемы? Хотелось бы знать, это реализация СБ такая или архитектура обработки событий и ее уже не обойдешь?

 
Vasiliy Pushkaryov:

... Хотелось бы знать, это реализация СБ такая или архитектура обработки событий и ее уже не обойдешь? 

Вы можете самостоятельно создать кнопку как графический объект без использования библиотеки и сравнить ее работу с кнопкой созданной через библиотеку.

 
Dmitry Fedoseev:

Вы можете самостоятельно создать кнопку как графический объект без использования библиотеки и сравнить ее работу с кнопкой созданной через библиотеку.

Спасибо за идею, сейчас попробую.
 
Vasiliy Pushkaryov:

Я вот здесь писал момент с кнопками, выдержка оттуда:

В Вашей библиотеке замечали такие проблемы? Хотелось бы знать, это реализация СБ такая или архитектура обработки событий и ее уже не обойдешь?

если для себя пишете (не в Маркет), то проще в C# делать окошки с кнопками, и вызывать из MQL .dll на C# - любая фантазия с кнопками, окошками, чекбоксами и т.п. в течении получаса - часа реализуется на C# , правда с неделю мне пришлось материал гуглить 

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

ЗЫ: да вспомнил, я простую панельку в кодебазу выложил, кнопок там нет, но текстовые метки есть и  код максимально простой у меня https://www.mql5.com/ru/code/25897

 
Dmitry Fedoseev:

Вы можете самостоятельно создать кнопку как графический объект без использования библиотеки и сравнить ее работу с кнопкой созданной через библиотеку.

Да, взял из одной старой работы, когда не работал с СБ, то делал типа кнопки закрытия. Быстро работает:


Получается проблема в реализации СБ.

 
Vasiliy Pushkaryov:

Да, взял из одной старой работы, когда не работал с СБ, то делал типа кнопки закрытия. Быстро работает:


Получается проблема в реализации СБ.

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

 
Igor Makanu:

если для себя пишете (не в Маркет), то проще в C# делать окошки с кнопками, и вызывать из MQL .dll на C# - любая фантазия с кнопками, окошками, чекбоксами и т.п. в течении получаса - часа реализуется на C# , правда с неделю мне пришлось материал гуглить 

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

ЗЫ: да вспомнил, я простую панельку в кодебазу выложил, кнопок там нет, но текстовые метки есть и  код максимально простой у меня  https://www.mql5.com/ru/code/25897

Не, C# не знаю.

А панельку посмотрю, спасибо.

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