Нету возможности изменить порядок расположения объектов в глубину, есть только изменение приоритета на получение события.
Пересоздавать необязательно.
Можно сначала отключить видимость объекта на всех таймфреймах, а потом обратно включить нужную видимость. Данный объект после этих манипуляций получит "нулевой уровень"
Пересоздавать необязательно.
Можно сначала отключить видимость объекта на всех таймфреймах, а потом обратно включить нужную видимость. Данный объект после этих манипуляций получит "нулевой уровень"
Я ожидал простого примера. Это было бы более полезно для понимания, потому что я много чего пробовал с Z-порядком. Но все напрасно.
Что не получается? Для горизонтальной линии Z-ордер нормально выставляется.
Попробуйте простой эксперт
//+------------------------------------------------------------------+ //| TestZOrder.mq5 | //| Copyright 2020, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #define OBJECT_NAME1 "RectangleLabel1" #define OBJECT_NAME2 "RectangleLabel2" #define OBJECT_NAME3 "HorizontalLine" //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- ObjectCreate(0,OBJECT_NAME1,OBJ_RECTANGLE_LABEL,0,0,0); ObjectSetInteger(0,OBJECT_NAME1,OBJPROP_XDISTANCE,100); ObjectSetInteger(0,OBJECT_NAME1,OBJPROP_YDISTANCE,100); ObjectSetInteger(0,OBJECT_NAME1,OBJPROP_XSIZE,300); ObjectSetInteger(0,OBJECT_NAME1,OBJPROP_YSIZE,200); ObjectSetInteger(0,OBJECT_NAME1,OBJPROP_BGCOLOR,clrNONE); ObjectSetInteger(0,OBJECT_NAME1,OBJPROP_BORDER_TYPE,BORDER_FLAT); ObjectSetString(0,OBJECT_NAME1,OBJPROP_TOOLTIP,OBJECT_NAME1); //--- ObjectCreate(0,OBJECT_NAME2,OBJ_RECTANGLE_LABEL,0,0,0); ObjectSetInteger(0,OBJECT_NAME2,OBJPROP_XDISTANCE,250); ObjectSetInteger(0,OBJECT_NAME2,OBJPROP_YDISTANCE,125); ObjectSetInteger(0,OBJECT_NAME2,OBJPROP_XSIZE,400); ObjectSetInteger(0,OBJECT_NAME2,OBJPROP_YSIZE,250); ObjectSetInteger(0,OBJECT_NAME2,OBJPROP_BGCOLOR,clrNONE); ObjectSetInteger(0,OBJECT_NAME2,OBJPROP_BORDER_TYPE,BORDER_FLAT); ObjectSetString(0,OBJECT_NAME2,OBJPROP_TOOLTIP,OBJECT_NAME2); //--- double bid=SymbolInfoDouble(_Symbol,SYMBOL_BID); ObjectCreate(0,OBJECT_NAME3,OBJ_HLINE,0,0,bid); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- ObjectDelete(0,OBJECT_NAME1); ObjectDelete(0,OBJECT_NAME2); ObjectDelete(0,OBJECT_NAME3); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- if(id==CHARTEVENT_OBJECT_CLICK) { long zorder=ObjectGetInteger(0,sparam,OBJPROP_ZORDER); PrintFormat("%s object clicked lparam=%I64d dparam=%.16g zorder=%I64d",sparam,lparam,dparam,zorder); zorder=1-zorder; ObjectSetInteger(0,sparam,OBJPROP_ZORDER,zorder); zorder=ObjectGetInteger(0,sparam,OBJPROP_ZORDER); PrintFormat("%s zorder set to %I64d",sparam,zorder); } } //+------------------------------------------------------------------+
Понажимайте мышкой на разных объектах, понаблюдайте тултипы объектов, смотрите журнал экспертов
Что не получается? Для горизонтальной линии Z-ордер нормально выставляется.
Попробуйте простой эксперт
Понажимайте мышкой на разных объектах, понаблюдайте тултипы объектов, смотрите журнал экспертов
Хороший пример - Спасибо! теперь задумался, куда бы это применить.
Что не получается? Для горизонтальной линии Z-ордер нормально выставляется.
Попробуйте простой эксперт
Понажимайте мышкой на разных объектах, понаблюдайте тултипы объектов, смотрите журнал экспертов
Спасибо за пример. Но я ожидал ответа в плане HLine. Но я полагаю, что HLine не поддерживает Z Order, как вы упомянули.
Спасибо за пример. Но я ожидал ответа в плане HLine. Но я полагаю, что HLine не поддерживает Z Order, как вы упомянули.
В примере ест HLine, если вы имеете в виду горизонтальную линию.
Если у линии z-ордер 0 а у прямоугольника z-ордер 1, то линия недоступна в пределах прямоугольника. И наоборот. Если у линии z-ордер 1, а у прямоугольника z-ордер 0, то линия доступна.
Поводите мышкой по графику и пощёлкайте левой кнопкой
Пересоздавать необязательно.
Можно сначала отключить видимость объекта на всех таймфреймах, а потом обратно включить нужную видимость. Данный объект после этих манипуляций получит "нулевой уровень"
Попробовал вручную так сделать, не изменяется Z-ордер
В примере ест HLine, если вы имеете в виду горизонтальную линию.
Если у линии z-ордер 0 а у прямоугольника z-ордер 1, то линия недоступна в пределах прямоугольника. И наоборот. Если у линии z-ордер 1, а у прямоугольника z-ордер 0, то линия доступна.
Поводите мышкой по графику и пощёлкайте левой кнопкой
Просим вас добавить такую возможность, изменение порядка отображения объектов
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Кто-нибудь может подсказать мне пример с Z_Order от HLINE?
Я хочу знать, как работать с Z-порядком объекта. Я не нашел примеров. пожалуйста помоги.
Создайте две строки и скажите мне, как я могу использовать z-порядок.