Этого не может быть, привязка идёт к углу графика и не зависит от масштаба графика. Что-то не так делаете, например, задаёте другие координаты.
//перерисовываем поле ввода по новым координатам, если его нет, то создаём void RedrawEdit(long eChartId, int eWindow, string eName, long eXdistance, long eYdistance, long eXsize, long eYsize, ENUM_BASE_CORNER eCorner, ENUM_ALIGN_MODE eAlign, bool eReadOnly, string eText, string eFont, int eSize, color eColor, color eColorBG, color eColorBR) { if(ObjectFind(eChartId,eName)==-1) { if(!ObjectCreate(eChartId,eName,OBJ_EDIT,eWindow,0,0)) return; //угол графика, относительно которого будут определяться координаты точки ObjectSetInteger(eChartId,eName,OBJPROP_CORNER,eCorner); //шрифт текста ObjectSetString(eChartId,eName,OBJPROP_FONT,eFont); //размер шрифта ObjectSetInteger(eChartId,eName,OBJPROP_FONTSIZE,eSize); //способ выравнивания текста в объекте ObjectSetInteger(eChartId,eName,OBJPROP_ALIGN,eAlign); //режим только для чтения ObjectSetInteger(eChartId,eName,OBJPROP_READONLY,eReadOnly); //на переднем плане ObjectSetInteger(eChartId,eName,OBJPROP_BACK,false); ObjectSetInteger(eChartId,eName,OBJPROP_SELECTABLE,false); ObjectSetInteger(eChartId,eName,OBJPROP_SELECTED,false); ObjectSetInteger(eChartId,eName,OBJPROP_HIDDEN,true); //ObjectSetInteger(eChartId,eName,OBJPROP_ZORDER,0); } if(ObjectFind(eChartId,eName)==-1) return; //координаты if(ObjectGetInteger(eChartId,eName,OBJPROP_XDISTANCE)!=eXdistance) ObjectSetInteger(eChartId,eName,OBJPROP_XDISTANCE,eXdistance); if(ObjectGetInteger(eChartId,eName,OBJPROP_YDISTANCE)!=eYdistance) ObjectSetInteger(eChartId,eName,OBJPROP_YDISTANCE,eYdistance); //размеры if(ObjectGetInteger(eChartId,eName,OBJPROP_XSIZE)!=eXsize) ObjectSetInteger(eChartId,eName,OBJPROP_XSIZE,eXsize); if(ObjectGetInteger(eChartId,eName,OBJPROP_YSIZE)!=eYsize) ObjectSetInteger(eChartId,eName,OBJPROP_YSIZE,eYsize); //цвет фона if(ObjectGetInteger(eChartId,eName,OBJPROP_BGCOLOR)!=eColorBG) ObjectSetInteger(eChartId,eName,OBJPROP_BGCOLOR,eColorBG); //цвет рамки if(ObjectGetInteger(eChartId,eName,OBJPROP_BORDER_COLOR)!=eColorBR) ObjectSetInteger(eChartId,eName,OBJPROP_BORDER_COLOR,eColorBR); //цвет текста if(ObjectGetInteger(eChartId,eName,OBJPROP_COLOR)!=eColor) ObjectSetInteger(eChartId,eName,OBJPROP_COLOR,eColor); //установим текст if(ObjectGetString(eChartId,eName,OBJPROP_TEXT)!=eText) ObjectSetString(eChartId,eName,OBJPROP_TEXT,eText); }
Этого не может быть, привязка идёт к углу графика и не зависит от масштаба графика. Что-то не так делаете, например, задаёте другие координаты.
Всё может быть) Если уменьшаешь ширину графика=открыть доп.окошки типа окна данных, то такие объекты сдвигаются вправо в неведомые дали за график))
- www.mql5.com
Всё может быть) Если уменьшаешь ширину графика=открыть доп.окошки типа окна данных, то такие объекты сдвигаются вправо в неведомые дали за график))
Да, так оно и есть.
OBJPROP_CORNER
к верхним углам CORNER_LEFT_UPPER или CORNER_RIGHT_UPPER
Спасибо большое!
Вот вызов функции:
CreateObject_Edit(Chart_ID,"Edit_Button",0,500,120,96,37,"Eur/USD",Var_Menu_Font_Edit,10,2,false,2,Var_Menu_Clr_EditText);
Вот сама функция:
bool CreateObject_Edit(const long chart_ID=0, // chart's ID const string name="Edit", // object name const int sub_window=0, // subwindow index const int x=0, // X coordinate const int y=0, // Y coordinate const int width=50, // width const int height=18, // height const string text="Text", // text const string font="Arial", // font const int font_size=10, // font size const ENUM_ALIGN_MODE align=ALIGN_CENTER, // alignment type const bool read_only=false, // ability to edit const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // chart corner for anchoring const color clr=clrBlack, // text color const color back_clr=clrWhite, // background color const color border_clr=clrNONE, // border color const bool back=false, // in the background const bool selection=false, // highlight to move const bool hidden=true, // hidden in the object list const long z_order=0) // priority for mouse click { //--- reset the error value ResetLastError(); //--- create edit field if(!ObjectCreate(chart_ID,name,OBJ_EDIT,sub_window,0,0)) { Print(__FUNCTION__, ": failed to create \"Edit\" object! Error code = ",GetLastError()); return(false); } //--- set object coordinates ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); //--- set object size ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); //--- set the text ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); //--- set text font ObjectSetString(chart_ID,name,OBJPROP_FONT,font); //--- set font size ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); //--- set the type of text alignment in the object ObjectSetInteger(chart_ID,name,OBJPROP_ALIGN,align); //--- enable (true) or cancel (false) read-only mode ObjectSetInteger(chart_ID,name,OBJPROP_READONLY,read_only); //--- set the chart's corner, relative to which object coordinates are defined ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); //--- set text color ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); //--- set background color ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); //--- set border color ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr); //--- display in the foreground (false) or background (true) ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- enable (true) or disable (false) the mode of moving the label by mouse ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); //--- hide (true) or display (false) graphical object name in the object list ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); //--- set the priority for receiving the event of a mouse click in the chart ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); //--- successful execution return(true); }
Еще раз ссылку на видео пошлю, как это все выглядить (не знаю, удалят ли ее или нет).
Я видел Ваше видео. Вставил Вашу функцию в индикатор, всё в порядке, работает как надо.
Вот сам индикатор, попробуйте.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день,
Проблема в том, что обьект "Edit" двигается вместе с масшатабированием графика, что очень неудобно. Можно ли это как-то изменить?