Вот модифицированный пример из справки из раздела Угол привязки
//+------------------------------------------------------------------+ //| Check_ENUM_BASECORNER.mq5 | //| Copyright © 2009, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2009, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" //+------------------------------------------------------------------+ //| создание объекта Label в нужном углу | //+------------------------------------------------------------------+ void CreateLabel(long chart_id, string name, int chart_corner, string text_label, int x_ord, int y_ord) { //--- ObjectCreate(chart_id,name,OBJ_EDIT,0,0,0); ResetLastError(); if(!ObjectSetInteger(chart_id,name,OBJPROP_CORNER,chart_corner)) Print("Не удалось установить угол привязки для объекта", name,", ошибка",GetLastError()); ObjectSetInteger(chart_id,name,OBJPROP_XDISTANCE,x_ord); ObjectSetInteger(chart_id,name,OBJPROP_YDISTANCE,y_ord); ObjectSetString(chart_id,name,OBJPROP_TEXT,text_label); } //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- int height=ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0); int width=ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0); string arrows[4]= { "LEFT_UPPER","RIGHT_UPPER", "RIGHT_LOWER","LEFT_LOWER" }; CreateLabel(0,arrows[0],CORNER_LEFT_UPPER,"0",50,50); CreateLabel(0,arrows[1],CORNER_RIGHT_UPPER,"1",50,50); CreateLabel(0,arrows[2],CORNER_RIGHT_LOWER,"2",50,50); CreateLabel(0,arrows[3],CORNER_LEFT_LOWER,"3",50,50); } //+------------------------------------------------------------------+
Результат:
Спасибо конечно, но это я и сам выяснил. Вопрос был почему OBJ_EDIT-у нельзя назначить угол который привязывается? Вот OBJ_LABEL-у я "сказал" привязываться правым нижним углом, и поставить объект на расстоянии 15 пикселей от нижней и правой границы. и OBJ_LABEL стал своим правым нижним уголком на расстоянии этих самых 15 пикселей. А когда я в том же самом коде заменил OBJ_LABEL на OBJ_EDIT то OBJ_EDIT встал в точку на 15 пикселях от границ своим левым вершним углом, проигнорировав ObjectSetInteger(Chart_ID, Name, OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER);
Ваш новый код из справки должен был бы нарисовать мне симметричную картину если в него подобавлять состветсвующие ObjectSetInteger(Chart_ID, Name, OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER);.
вопрос то в чем? я например не знаю (и знать не хочу по каким то важным для меня причинам) меняющуюся ширину поля ввода, но мне нужно чтобы какая она ни была узкая или широкая, в правой части графика правая граница этого поля ввода всегда должна быть на заданном мною расстоянии от рамки окна.
Спасибо конечно, но это я и сам выяснил. Вопрос был почему OBJ_EDIT-у нельзя назначить угол который привязывается?
Мы наверно с вами о разных углах привязки говорим. OBJ_EDIT поставить в правый нижний угол графика можно. нельзя задать ему свойство ANCHOR_RIGHT_LOWER.
прошу вас прочитайте внимательно что мне нужно сделать: нужно так разместить объект OBJ_EDIT в правом нижнем углу графика, чтобы его (этого самого OBJ_EDIT) правый нижний угол был на расстоянии 15 пикселей от правой и нижней границы графика. и чтобы если я просто увеличил его ширину, то правый нижний угол OBJ_EDIT так и остался бы на месте а его левая граница отъехала бы влево.
да есть такая штука в мт5
сталкивался
как говарил энштейн
все относительно
...
все относительно
Мы наверно с вами о разных углах привязки говорим. OBJ_EDIT поставить в правый нижний угол графика можно. нельзя задать ему свойство ANCHOR_RIGHT_LOWER.
прошу вас прочитайте внимательно что мне нужно сделать: нужно так разместить объект OBJ_EDIT в правом нижнем углу графика, чтобы его (этого самого OBJ_EDIT) правый нижний угол был на расстоянии 15 пикселей от правой и нижней границы графика. и чтобы если я просто увеличил его ширину, то правый нижний угол OBJ_EDIT так и остался бы на месте а его левая граница отъехала бы влево.
написал разработчикам... ответили что
У OBJ_EDIT задаются фиксированные размеры, а у OBJ_LABEL - нет.
странная логика. в одном объекте сделали возможность выбора якоря для его привязки, а в другом (в сущности - таком же прямоугольнике) - "не захотелось". а ведь практически наверняка код расчетов позиционирования объекта можно почти один-в-один скопипастить.
сначала я думал что это мои "выдумки", но ведь это действительно нужная (имхо) вещь! ведь как правило рядом с полем ввода пишется OBJ_LABEL (слева или справа) и разумно было бы иметь возможность посадить их на одну общую точку привязки. а сейчас ситуация выглядит так:
ситуация напоминает мне историю с форматированием стайлера. тогда сначала стояли на своем, но потом сообщество таки убедило их доделать настройку форматирования. может и здесь также случится? или может это только моя придурь и кроме меня такие точные позиционирования элементов интерфейса никому не нужны?
написал разработчикам... ответили что
странная логика. в одном объекте сделали возможность выбора якоря для его привязки, а в другом (в сущности - таком же прямоугольнике) - "не захотелось". а ведь практически наверняка код расчетов позиционирования объекта можно почти один-в-один скопипастить.
сначала я думал что это мои "выдумки", но ведь это действительно нужная (имхо) вещь! ведь как правило рядом с полем ввода пишется OBJ_LABEL (слева или справа) и разумно было бы иметь возможность посадить их на одну общую точку привязки. а сейчас ситуация выглядит так:
Поддерживаю, так будет удобнее.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
хотел поставить OBJ_EDIT в правый нижний угол чарта на расстоянии 15 пикселей от границы. думал что это можно будет сделать указав точку привязки объекта ANCHOR_RIGHT_LOWER. но не получается :((
неужели OBJ_EDIT привязывается только по левому верхнему углу? если да - то почему ему такая немилость? или это просто еще неисправленный глюк?
вот код из двух абсолютно одинаковых кусков для двух объектов OBJ_EDIT и OBJ_LABEL