MetaTrader 4 Build 529 beta mit neuem Compiler veröffentlicht - Seite 114

 

Bild 557.

OBJ_LABEL bewegt sich in die Mitte, wenn es über die Funktion eingefügt wird, und bewegt sich nach der Auswahl nach rechts und teilweise aus dem Diagrammfenster heraus. Die Bindung befindet sich in der oberen rechten Ecke. Funktion:

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

Diese Funktion wird aufgerufen:

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

In früheren Versionen ab Build 554 funktionierte alles wie es sollte, es gab keine Sprünge zur Mitte und dann nach rechts außerhalb der Grenzen des Diagrammfensters, alles war an die angegebenen Grenzen gebunden.

 

Fehlerhaftes Verhalten von Textobjekten im Unterfenster reproduziert. Wir werden sie korrigieren.

Bitte warten Sie.

 
artmedia70:

Jetzt muss ich sie nur noch anklicken, und schon sind sie alle an ihrem Platz:


Ich danke Ihnen. Vervielfältigt und korrigiert
 
Im 557. Build haben sich alle OBJ_EDIT-Koordinaten an beiden Koordinaten um 1 Pixel verschoben. Die Objekte waren genau verteilt, jetzt sind sie alle ein wenig nach rechts und unten verschoben.
Außerdem ist es nicht möglich, OBJ_LABEL programmatisch zu verschieben. Diese Funktion aus 5 hat in 555 gut funktioniert, ich habe meinen Code nicht geändert.

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

ähnliche Funktion funktioniert für Schaltflächen, nicht für OBJ_LABEL.

 

Ich habe die gleichen Probleme mit Objekten wie Barbarian und verwende die gleiche Funktion für OBJ_LABEL. Ich habe gestern Morgen hier darüber geschrieben. Ich habe das Gefühl, dass der Ursprung außerhalb des sichtbaren Diagramms liegt, nicht am Rand des Diagramms, sondern am Rand des Fensters. Wenn Sie OBJ_LABEL mit den Koordinaten +1 in der unteren rechten Ecke anzeigen, ist alles in Ordnung. Die Objekte am oberen Rand des Diagramms verschwinden ebenfalls, sie müssen nach oben gehen. Wenn Sie das Diagramm auf den gesamten Bildschirm vergrößern, wird das OBJ_LABEL nicht verschoben, sondern bleibt in der Mitte. Barbarian hat es bereits beschrieben, aber es ist unklar, ob Sie es repariert haben oder nicht.

 
pro_:

Ich habe die gleichen Probleme mit Objekten wie Barbarian und verwende die gleiche Funktion für OBJ_LABEL. Ich habe gestern Morgen hier darüber geschrieben. Ich habe das Gefühl, dass der Ursprung außerhalb des sichtbaren Diagramms liegt, nicht am Rand des Diagramms, sondern am Rand des Fensters. Wenn Sie OBJ_LABEL mit den Koordinaten +1 in der unteren rechten Ecke anzeigen, ist alles in Ordnung. Die Objekte am oberen Rand des Diagramms verschwinden ebenfalls, sie müssen nach oben gehen. Wenn Sie das Diagramm auf den gesamten Bildschirm vergrößern, wird das OBJ_LABEL nicht verschoben, sondern bleibt in der Mitte. Nun, Barbarian hat es bereits beschrieben, aber es ist unklar, ob du es repariert hast oder was.


Ich habe das gleiche Problem. Bild 557, gerade aktualisiert. Ich habe einen EA mit vielen Informationen auf dem Bildschirm angezeigt, jetzt das Diagramm ist nur Chaos.

Der gesamte Text(OBJ_LABEL) hat ein Eigenleben. Und es ist nicht klar, wie die Koordinaten ausgewählt werden, fühlt es sich an, als ob zufällig.was interessant ist, wenn die Auswahl springen, aber absolut nicht an ihrem Platz.

Im Build 555 war alles in Ordnung.

 
Bei der Arbeit mit einem Flash-Laufwerk, d. h. mit allem, was sich auf dem Flash-Laufwerk befindet, werden alle Konten ständig zurückgesetzt ....
 

Neben der alten Steuerung von grafischen Objekten im Stil von "Four" gibt es jetzt eine Steuerung von Objekten im Stil von "Five".

Leider ist das Programm nicht frei von Fehlern. Glücklicherweise wurden viele Fehler behoben.

 
stringo:

Zusammen mit den alten vier machen wir eine Objektverwaltung im Stil von fünf.

Leider ist das nicht ohne Fehler

.

Glücklicherweise wurden viele Fehler bereits behoben.


Es ist alles klar. Ich glaube, niemand erwartet, dass alles völlig fehlerfrei abläuft. Es ist nur so, dass, wenn etwas, das im Jahr 555 gut funktioniert, im Jahr 556 schlechter oder im Jahr 557 gar nicht mehr funktioniert, es empörte Stimmen gibt (auch meine). Aber das ist in Ordnung. Ich habe die Schaltflächen korrigiert, vielen Dank. Die Darstellung der Objekte erfolgt jedoch nach wie vor nach Namen und nicht nach Aufrufreihenfolge.
 

Gestern hatte ich Probleme mit dem bmp-Bild und konnte es nicht auf die Karte laden, und ich weiß noch nicht, ob dieser Punkt funktioniert oder nicht ...

#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 );
  }
Grund der Beschwerde: