Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нет времени изучать MQL5? Библиотека исходников для вас!
foxMag
513
foxMag 2014.09.21 01:52 

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

ObjectSetInteger(0,name, OBJPROP_CORNER, 0) вместо 

ObjectSet(name, OBJPROP_CORNER, 0) .

Лишь замена

ObjectSet(name, OBJPROP_CORNER, 1) на функцию

ObjectSetInteger(0,name, OBJPROP_CORNER, 1)

- привязка к правому верхнему углу - приводит к тому, что объекты располагаются так, как будто бы у них одинаковые координаты (что, конечно, не так); они накладываются друг на друга.

Использование вместо 1 (единички) "пятерочной" константы  CORNER_RIGHT_UPPER (воспринимается без проблем) ничего не меняет.

Ниже для ясности привожу картинки. 

ПРАВИЛЬНО - ObjectSet(name, OBJPROP_CORNER, 1)

 

НЕПРАВИЛЬНО -  ObjectSetInteger(0,name, OBJPROP_CORNER, 1)

 

По-моему, это "головоломка" для уважаемых разработчиков. 

foxMag
513
foxMag 2014.09.22 12:55  
Пробую обратить внимание на мою тему еще раз. Спасибо.
Slawa
Модератор
6676
Slawa 2014.09.22 13:33  

При переходе на "новую запись" Вам нужно учесть, что привязка к углу "по-новому" теперь обеспечивается двумя свойствами.

Второе свойство - OBJPROP_ANCHOR

Старый вызов выставляет сразу оба свойства.

Vitalie Postolache
10999
Vitalie Postolache 2014.09.22 16:27  
Если что-то работает, зачем это что-то менять? В пятом лучше причесать уже код под те стандарты.
Artyom Trishkin
68725
Artyom Trishkin 2014.09.22 18:58  
evillive:
Если что-то работает, зачем это что-то менять? В пятом лучше причесать уже код под те стандарты.

Сделали очень удобно.

Осталась привязка к углу графика (OBJPROP_CORNER), но добавилось ещё и позиционирование угла объекта относительно точки привязки (OBJPROP_ANCHOR). Очень удобно и полезно.

ЗЫ. Кстати - не только угла объекта, но и его сторон. Теперь можно позиционировать объект по восьми узлам:

  1. верх-лево
  2. верх-право
  3. верх-центр
  4. низ-лево
  5. низ-право
  6. низ-центр
  7. право-центр
  8. лево-центр
foxMag
513
foxMag 2014.09.22 22:08  
stringo:

При переходе на "новую запись" Вам нужно учесть, что привязка к углу "по-новому" теперь обеспечивается двумя свойствами.

Второе свойство - OBJPROP_ANCHOR

Старый вызов выставляет сразу оба свойства.

Спасибо за дружественный ответ. Удачи!
foxMag
513
foxMag 2014.09.22 22:10  
evillive:
Если что-то работает, зачем это что-то менять? В пятом лучше причесать уже код под те стандарты.
Спасибо за ответ, удачи!
foxMag
513
foxMag 2014.09.22 22:12  
artmedia70:

Сделали очень удобно.

Осталась привязка к углу графика (OBJPROP_CORNER), но добавилось ещё и позиционирование угла объекта относительно точки привязки (OBJPROP_ANCHOR). Очень удобно и полезно.

ЗЫ. Кстати - не только угла объекта, но и его сторон. Теперь можно позиционировать объект по восьми узлам:

  1. верх-лево
  2. верх-право
  3. верх-центр
  4. низ-лево
  5. низ-право
  6. низ-центр
  7. право-центр
  8. лево-центр
Спасибо за подробности, весьма кстати. Удачи!
Slawa
Модератор
6676
Slawa 2014.09.23 05:05  
artmedia70:

Сделали очень удобно.

Осталась привязка к углу графика (OBJPROP_CORNER), но добавилось ещё и позиционирование угла объекта относительно точки привязки (OBJPROP_ANCHOR). Очень удобно и полезно.

ЗЫ. Кстати - не только угла объекта, но и его сторон. Теперь можно позиционировать объект по восьми узлам:

  1. верх-лево
  2. верх-право
  3. верх-центр
  4. низ-лево
  5. низ-право
  6. низ-центр
  7. право-центр
  8. лево-центр

9. центр-центр

Нумерация идёт от 0 до 8

foxMag
513
foxMag 2014.09.23 07:39  
stringo:

9. центр-центр

Нумерация идёт от 0 до 8

С Вашего позволения уточню официальную информацию из документации:

Идентификатор

Значение
константы

Описание

ANCHOR_LEFT_UPPER 

 0

Точка привязки в левом верхнем углу

ANCHOR_LEFT

 1

Точка привязки слева по центру

ANCHOR_LEFT_LOWER

 2

Точка привязки в левом нижнем углу

ANCHOR_LOWER

 3

Точка привязки снизу по центру

ANCHOR_RIGHT_LOWER

 4

Точка привязки в правом нижнем углу

ANCHOR_RIGHT

 5

Точка привязки справа по центру

ANCHOR_RIGHT_UPPER

 6

Точка привязки в правом верхнем углу

ANCHOR_UPPER

 7

Точка привязки сверху по центру

ANCHOR_CENTER

 8

Точка привязки строго по центру объекта

 К моей теме. Действительно, совместное использование двух функций для OBJ_LABEL

   ObjectSetInteger(0,name, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
   ObjectSetInteger(0,name, OBJPROP_ANCHOR, ANCHOR_RIGHT_UPPER);

 или, что то же самое,

   ObjectSetInteger(0,name, OBJPROP_CORNER, 1);
   ObjectSetInteger(0,name, OBJPROP_ANCHOR, 6);

 вместо одиночной функции (как это было в "старом" МТ4)

   ObjectSet(name, OBJPROP_CORNER, 1);

исправило ошибку, которой посвящена эта тема.

Спасибо всем за обсуждение. 

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий