MetaTrader 4 Build 529 beta liberado con nuevo compilador - página 114

 

Bild 557.

OBJ_LABEL se desplaza al centro cuando se fija desde la función, una vez que se resalta se desplaza al lado derecho y se superpone parcialmente a la ventana del gráfico. La encuadernación está en la esquina superior derecha. Función:

//+-------------------------------------------------------------------------------------------------+
//|  Параметры:                                                                            |
//|    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);
}

Se llama a esta función:

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

En las versiones anteriores de la compilación 554 y más antiguas, todo funcionaba como debería, no había saltos al centro y luego a la derecha fuera de los límites de la ventana del gráfico, todo se ceñía a los límites especificados.

 

Se reproduce el comportamiento incorrecto de los objetos de texto en la subventana. Lo corregiremos.

Por favor, espere.

 
artmedia70:

Ahora sólo voy a hacer clic en ellos y todos estarán en su sitio:


Gracias. Reproducido y corregido
 
En la compilación 557, todas las coordenadas OBJ_EDIT se han desplazado 1 píxel en ambas coordenadas. Los objetos estaban exactamente espaciados, ahora están todos desplazados un poco a la derecha y más abajo.
Además, es imposible mover OBJ_LABEL programáticamente. Esta función del 5 funcionaba bien en el 555, no cambié mi código.

//+------------------------------------------------------------------+
//| Перемещает текстовую метку             |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+

esta función funciona para los botones, no para el OBJ_LABEL.

 

Tengo los mismos problemas con los objetos que Barbarian, utilizando la misma función para OBJ_LABEL. Ayer por la mañana escribí sobre ello aquí. Me parece que el origen está fuera del gráfico visible, no en el borde del gráfico, sino en el borde de la ventana. Si muestra OBJ_LABEL con las coordenadas +1 de la esquina inferior derecha, todo irá bien. Los objetos del borde superior del gráfico también desaparecen, deben subir. Si amplía el gráfico a la pantalla completa, la OBJ_LABEL no se desplazará, sino que estará en el centro. Bueno Barbarian ya lo describió, pero no está claro si lo arreglaste o qué.

 
pro_:

Tengo los mismos problemas con los objetos que Barbarian, utilizando la misma función para OBJ_LABEL. Ayer por la mañana escribí sobre ello aquí. Me parece que el origen está fuera del gráfico visible, no en el borde del gráfico, sino en el borde de la ventana. Si muestra OBJ_LABEL con las coordenadas +1 de la esquina inferior derecha, todo irá bien. Los objetos del borde superior del gráfico también desaparecen, deben subir. Si amplía el gráfico a la pantalla completa, la OBJ_LABEL no se desplazará, sino que estará en el centro. Bueno Barbarian ya lo describió, pero no está claro, lo arreglaste o qué.


Yo tengo lo mismo. Bild 557, acaba de actualizarlo. Tengo un EA con mucha información mostrada en la pantalla, ahora el gráfico es solo un caos.

El texto completo(OBJ_LABEL) tiene vida propia. Y no está claro cómo se seleccionan las coordenadas, se siente como si al azar.Lo que es interesante al seleccionar salto, pero absolutamente no en su lugar.

Todo estaba bien en la compilación 555.

 
Cuando se trabaja con una unidad flash, es decir, todo lo que está en la unidad flash, todas las cuentas se restablecen constantemente ....
 

Junto con el antiguo control de objetos gráficos al estilo de Cuatro, estamos haciendo un control de objetos al estilo de Cinco.

Desgraciadamente, no está exento de errores. Afortunadamente, se han corregido muchos errores.

 
stringo:

Junto con los antiguos cuatro, estamos haciendo una gestión de objetos de cinco.

Por desgracia, no está exenta de errores

.

Afortunadamente, ya se han corregido muchos errores.


Todo está claro. Nadie, creo, espera que todo vaya completamente libre de errores. Es que cuando algo que funciona bien en el 555 empeora en el 556 o no funciona en absoluto en el 557, surgen voces indignadas (la mía incluida). Pero está bien. He arreglado los botones, gracias. Sin embargo, la representación de los objetos sigue siendo por nombre, no por orden de llamada.
 

Ayer tuve problemas con la imagen bmp y no conseguí cargarla en el gráfico, y aún no sé si este punto funciona o no...

#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 );
  }