OBJPROP_CORNER и OBJPROP_ANCHOR

 

Привет, друзья.

Объясните, пожалуйста, в чем отличия OBJPROP_CORNER от OBJPROP_ANCHOR применительно к объекту OBJ_RECTANGLE_LABEL.

После объявления

ObjectSetInteger(ChartID(), name, OBJPROP_CORNER, CORNER_RIGHT_UPPER);

Мой объект сместился в правый верхний угол, и исчез за границей экрана, т.к. OBJPROP_XSIZE и OBJPROP_YSIZE - это точки верхнего левого угла моего прямоугольника.

Получается, мне для оси X нужно всегда писать отрицательное число для того, чтобы прямоугольник корректно отображался.

 

OBJPROP_CORNER

Угол графика для привязки графического объекта

От угла графика отсчитывается расстояние до якорной точки объекта. Считается, что объект находится внутри окна, поэтому от левого верхнего угла считаем вправо и вниз, от правого верхнего угла считаем влево и вниз, от правого нижнего - влево и вверх, от левого нижнего - вправо и вверх

OBJPROP_ANCHOR

Положение точки привязки графического объекта

Якорная точка объекта, до которой считается расстояние. Может быть 9 - по углам, по центрам сторон и в центре.

Когда вы создаёте прямоугольник вручную, то по умолчанию якорная точка "соответсвует" углу привязки. Если привязываемся к левому верхнему углу графика, то якорная точка находится в левом верхнем углу прямоугольника.

Когда создаёте прямоугольник программно, то явно задавайте оба свойства

PS OBJPROP_XSIZE и OBJPROP_YSIZE - это не точки, а размеры прямоугольника в ширину и высоту

 

Спасибо!

Разобрался, прочитав раз 5 сообщение (:. Проблема в том, что свойство OBJPROP_ANCHOR неприменимо к объекту OBJ_RECTANGLE_LABEL. Поэтому, это свойство никак не влияло на положение объекта.

 
solarplexus:

Спасибо!

Разобрался, прочитав раз 5 сообщение (:. Проблема в том, что свойство OBJPROP_ANCHOR неприменимо к объекту OBJ_RECTANGLE_LABEL. Поэтому, это свойство никак не влияло на положение объекта.

Как это неприменимо?

Вы просто попробуйте. Программно.

 
Вот попробуйте тестового эксперта. Нашёл в закромах
Файлы:
 
stringo:

Как это неприменимо?

Вы просто попробуйте. Программно.

Так чего там пробовать, если в справке написано, что неприменимо?))

В Вашем примере ведь используется OBJ_LABEL, а не OBJ_RECTANGLE_LABEL. Вот к нему и неприменимо. 

 

Да. Спасибо, что напомнили.

Исторически сложилось, что якорь именно у OBJ_RECTANGLE_LABEL всегда в левом верхнем углу объекта

 
stringo:
Вот попробуйте тестового эксперта. Нашёл в закромах
Имхо, очень хорошая по полезности весчь.