Выпущена бета-версия MetaTrader 4 Build 529 с новым компилятором - страница 114

 

Билд 557.

OBJ_LABEL съезжает в центр при установке его из функции, стоит его выделить и он съезжает в правую часть, частично при этом выходит за границы окна графика. Привязка идет по правому верхнему углу. Функция:

//+-------------------------------------------------------------------------------------------------+
//|  Параметры:                                                                            |
//|    nm - наименование объекта                                                 |
//|    tx - текст                                                                              |
//|    cl - цвет метки                                                                     |
//|    xd - координата X в пикселах                                              |
//|    yd - координата Y в пикселах                                              |
//|    cr - номер угла привязки (0 - левый верхний )                   |
//|                                               1 - правый верхний                   |
//|                                               2 - левый нижний                       |
//|                                               3 - правый нижний )                   |
//|    fs - размер шрифта             (9 - по умолчанию  )                   |
//+-------------------------------------------------------------------------------------------------+
void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
   if(ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0, 0);
   ObjectSetText(nm, tx, fs, "Arial");
   ObjectSet(nm, OBJPROP_COLOR    , cl);
   ObjectSet(nm, OBJPROP_XDISTANCE, xd);
   ObjectSet(nm, OBJPROP_YDISTANCE, yd);
   ObjectSet(nm, OBJPROP_CORNER   , cr);
   ObjectSet(nm, OBJPROP_FONTSIZE , fs);
}

Вызов данной функции:

SetLabel("mf_metka",StringConcatenate("б/у Buy : ", DoubleToStr(urtpbuy,Digits)," Sell : ", DoubleToStr(urtpsell,Digits)), PaleGoldenrod, 30, 25, 1, 8);

В прошлых версиях билда 554 и старше все работало как нужно, не было ни каких съездов в центр и потом в право за границы окна графика, все сразу привязывалось к тем границам которые указывались.

 

Неправильное поведение текстовых объектов в подокне воспроизведено. Будем исправлять.

Пожалуйста ждите.

 
artmedia70:

А вот сейчас я просто пощёлкаю по ним мышкой и они все разместятся по своим местам:


Спасибо. Воспроизвели и исправили
 
В 557-м билде все координаты OBJ_EDIT съехали на 1 пиксель по обеим координатам. Объекты были точно расставлены, теперь все сдвинулись чуть правее и ниже.
Кроме того невозможно перемещать OBJ_LABEL программно. Вот эта функция из 5-ки прекрасно работала в 555-м, свой код не менял.

//+------------------------------------------------------------------+
//| Перемещает текстовую метку             |
//+------------------------------------------------------------------+
bool LabelMove(const long   chart_ID=0,   // ID графика
               const string name="Label", // имя метки
               const int    x=0,          // координата по оси X
               const int    y=0)          // координата по оси Y
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- переместим текстовую метку 
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": не удалось переместить X-координату метки! Код ошибки = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": не удалось переместить Y-координату метки! Код ошибки = ",GetLastError());
      return(false);
     }
//--- успешное выполнение
   return(true);
  }
//+------------------------------------------------------------------+

подобная функция для кнопок работает, для OBJ_LABEL нет.

 

У меня те же проблемы с объектами что и у Barbarian, использую ту же функцию для OBJ_LABEL. Еще вчера утром об этом сюда писал. Такое ощущение что начало отсчета координат находится за пределами видимого графика, не на грани графика, а на краю окна. Если вывести на экран OBJ_LABEL с координатами +1 от правого нижнего угла все будет прекрасно видно. Объекты по верхнему краю графика тоже исчезают, видимо уходят вверх. При увеличении графика на весь экран OBJ_LABEL не смещаются, а оказываются в центре. Ну Barbarian уже это описал, но непонятно вы это исправили или что.

 
pro_:

У меня те же проблемы с объектами что и у Barbarian, использую ту же функцию для OBJ_LABEL. Еще вчера утром об этом сюда писал. Такое ощущение что начало отсчета координат находится за пределами видимого графика, не на грани графика, а на краю окна. Если вывести на экран OBJ_LABEL с координатами +1 от правого нижнего угла все будет прекрасно видно. Объекты по верхнему краю графика тоже исчезают, видимо уходят вверх. При увеличении графика на весь экран OBJ_LABEL не смещаются, а оказываются в центре. Ну Barbarian уже это описал, но непонятно вы это исправили или что.


У меня тоже самое. Билд 557, только что обновил. У меня советник с выводом большого количества информации на экран, сейчас на графике хаос просто.

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

В билде 555 все было хорошо.

 
При работе с флешкой то есть все на флешке, постоянно слетают все счета ....
 

Наряду со старым, четвёрочным, управлением графическими объектами мы делаем управление объектами в стиле пятёрки.

К сожалению, без ошибок не обошлось. К счастью, много ошибок уже поправили.

 
stringo:

Наряду со старым, четвёрочным, управлением графическими объектами мы делаем управление объектами в стиле пятёрки.

К сожалению, без ошибок не обошлось. К счастью, много ошибок уже поправили.


Это все понятно. Никто, я думаю, не ждет что все пройдет абсолютно без ошибок. Просто когда то что работает в 555-м становится хуже в 556-м или вовсе не работает в 557, появляются возмущенные голоса (мой в том числе). А так все в порядке. Работу кнопок наладили, спасибо. Правда отрисовка объектов все еще по имени, а не по порядку вызова.
 

вчера провозился с bmp картинка так и не удалось вогрузить ее на график, и я не в курсе работает этот момент или еще нет ...

#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
string label_name="ted";
string euro ="\\Images\\button_grey_play.bmp";

//+------------------------------------------------------------------+
void OnTick()
  {
         //--- попробуем создать объект OBJ_BITMAP_LABEL
         ObjectCreate(label_name,OBJ_BITMAP_LABEL ,0,0,0);
         ObjectSet   (label_name,OBJPROP_CORNER   ,0    );
         ObjectSet   (label_name,OBJPROP_XDISTANCE,20  );
         ObjectSet   (label_name,OBJPROP_YDISTANCE,20   );
         ObjectSet   (label_name,OBJPROP_BMPFILE  ,euro );
  }