Думаю,что тема, которую я предлагаю к обсуждению, касается многих. Нередки случаи, когда графические объекты пересекаются своими "зонами чувствительности", попросту имеют одинаковые или близкие геометрические координаты в окне платформы. И попытки замаркировать один из таких объектов часто бывают неудачными из-зи того, что другие объекты имеют более высокий (приоритетный) "уровень доступности". (Если термины, которые я использую, неудачны или имеют общепринятую альтернативу, прошу мне это заметить).
Частично эта проблема могла бы быть решена путём повышения уровня доступности желаемых объектов, тогда как все другие помещались бы в "фоновую область". Однако, все мои попытки найти программные средства управления уровнями доступности графических объектов не увенчались успехом. Может быть, кто-то знает, как это делается.
Также помогла бы решению проблемы возможность объявлять отдельные графические объекты немаркируемыми. Есть ли такая возможность? Пусть даже средствами Windows. Пока, чтобы сделать объекты "немаркируемыми", я их удаляю (ObjectDelete) и немедленно создаю вновь (ObjectCreate). Может быть есть более изящное решение проблемы?
Заранее благодарю всех, кто примет участие в дискуссии.
Справочник MQL4 --> Графические объекты --> Идентификаторы свойств объекта используются в функциях ObjectGet() и ObjectSet().
Свойства объектов : OBJPROP_BACK 9 bool Получает/устанавливает флаг фонового отображения объекта .
Если флаг установлен то объект рисуется как фон.
Частично эта проблема могла бы быть решена путём повышения уровня доступности желаемых объектов, тогда как все другие помещались бы в "фоновую область". Однако, все мои попытки найти программные средства управления уровнями доступности графических объектов не увенчались успехом. Может быть, кто-то знает, как это делается.
Порядок объектов зависит от их названий. Чем "меньше" (грубо говоря, раньше в алфавите) первая буква в названии, тем "глубже" объект.
Также помогла бы решению проблемы возможность объявлять отдельные графические объекты немаркируемыми. Есть ли такая возможность? Пусть даже средствами Windows. Пока, чтобы сделать объекты "немаркируемыми", я их удаляю (ObjectDelete) и немедленно создаю вновь (ObjectCreate). Может быть есть более изящное решение проблемы?
Снять выделение с объекта средствами MQL можно только озвученным способом - удалить и создать заново.
А стоит ли лезьть ради этого в WinAPI? Не думаю.
Можно разделить объекты на групы(на одном баре объекты из разных груп), установить всем по умолчанию "рисовать как фон",
а потом горячими клавишами вызывать нужный скрипт который будет изменят флаг нужной группы,
а остальные группы возвращать в дефолтное состояние.
Таким образом например после нажатия клавиш ctrl+4 все объекты будут рисовать как фон кроме объектов группы 4.
Фоновость объектов не влияет на их преоритет при вызове(как уже сказал komposter) но таким образом можно задвинуть объекты за график,
или выдвинуть перед ним, что иногда важно при большом колличестве объектов на одном баре.
Большое спасибо всем за помощь. Желаю удачи на рынках.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Думаю,что тема, которую я предлагаю к обсуждению, касается многих. Нередки случаи, когда графические объекты пересекаются своими "зонами чувствительности", попросту имеют одинаковые или близкие геометрические координаты в окне платформы. И попытки замаркировать один из таких объектов часто бывают неудачными из-зи того, что другие объекты имеют более высокий (приоритетный) "уровень доступности". (Если термины, которые я использую, неудачны или имеют общепринятую альтернативу, прошу мне это заметить).
Частично эта проблема могла бы быть решена путём повышения уровня доступности желаемых объектов, тогда как все другие помещались бы в "фоновую область". Однако, все мои попытки найти программные средства управления уровнями доступности графических объектов не увенчались успехом. Может быть, кто-то знает, как это делается.
Также помогла бы решению проблемы возможность объявлять отдельные графические объекты немаркируемыми. Есть ли такая возможность? Пусть даже средствами Windows. Пока, чтобы сделать объекты "немаркируемыми", я их удаляю (ObjectDelete) и немедленно создаю вновь (ObjectCreate). Может быть есть более изящное решение проблемы?
Заранее благодарю всех, кто примет участие в дискуссии.