MetaTrader 4 Build 529 beta rilasciato con un nuovo compilatore - pagina 114

 

Bild 557.

OBJ_LABEL si sposta al centro quando viene impostato dalla funzione, una volta evidenziato si sposta sul lato destro e si sovrappone parzialmente alla finestra del grafico. La rilegatura è in alto a destra. Funzione:

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

Chiamare questa funzione:

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

Nelle versioni precedenti della build 554 e più vecchie, tutto funzionava come doveva, non c'erano salti al centro e poi a destra fuori dai confini della finestra del grafico, tutto era legato ai confini che erano stati specificati.

 

Comportamento errato degli oggetti di testo nella sottofinestra riprodotta. Lo correggeremo.

Si prega di attendere.

 
artmedia70:

Ora devo solo cliccarci sopra e saranno tutti al loro posto:


Grazie. Riprodotto e corretto
 
Nella build 557, tutte le coordinate OBJ_EDIT si sono spostate di 1 pixel in entrambe le coordinate. Gli oggetti erano esattamente distanziati, ora sono tutti spostati un po' a destra e in basso.
Inoltre, è impossibile spostare OBJ_LABEL programmaticamente. Questa funzione del 5 ha funzionato bene nel 555, non ho cambiato il mio codice.

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

una funzione simile funziona per i pulsanti, non per OBJ_LABEL.

 

Ho gli stessi problemi con gli oggetti di Barbarian, usando la stessa funzione per OBJ_LABEL. Ne ho scritto qui ieri mattina. Mi sembra che l'origine sia fuori dal grafico visibile, non sul bordo del grafico, ma sul bordo della finestra. Se si visualizza OBJ_LABEL con coordinate +1 dall'angolo in basso a destra, tutto andrà bene. Anche gli oggetti sul bordo superiore del grafico scompaiono, devono andare verso l'alto. Se si ingrandisce il grafico a tutto schermo, l'OBJ_LABEL non si sposta, ma rimane al centro. Beh, Barbarian l'ha già descritto, ma non è chiaro se l'hai aggiustato o cosa.

 
pro_:

Ho gli stessi problemi con gli oggetti di Barbarian, usando la stessa funzione per OBJ_LABEL. Ne ho scritto qui ieri mattina. Mi sembra che l'origine sia fuori dal grafico visibile, non sul bordo del grafico, ma sul bordo della finestra. Se si visualizza OBJ_LABEL con coordinate +1 dall'angolo in basso a destra, tutto andrà bene. Anche gli oggetti sul bordo superiore del grafico scompaiono, devono salire. Se si ingrandisce il grafico a tutto schermo, l'OBJ_LABEL non si sposta, ma rimane al centro. Beh, Barbarian l'ha già descritto, ma non è chiaro se l'hai aggiustato o cosa.


Ho la stessa cosa. Bild 557, appena aggiornato. Ho un EA con un sacco di informazioni visualizzate sullo schermo, ora il grafico è solo un caos.

L'intero testo(OBJ_LABEL) ha una vita propria. E non è chiaro come vengono selezionate le coordinate, sembra come se in modo casuale, che è interessante quando si seleziona il salto, ma non al loro posto.

Tutto era a posto nella build 555.

 
Quando si lavora con una chiavetta, cioè tutto ciò che si trova sulla chiavetta, tutti gli account vengono costantemente resettati ....
 

Insieme al vecchio controllo degli oggetti grafici in stile Quattro, stiamo facendo un controllo degli oggetti in stile Cinque.

Sfortunatamente, non è senza bug. Fortunatamente, molti bug sono stati risolti.

 
stringo:

Insieme alla vecchia gestione grafica degli oggetti a quattro, stiamo facendo una gestione degli oggetti a cinque.

Sfortunatamente, non è senza bug

.

Fortunatamente, molti bug sono già stati risolti.


È tutto chiaro. Nessuno, credo, si aspetta che tutto vada completamente senza errori. È solo che quando qualcosa che funziona bene nel 555 diventa peggiore nel 556 o non funziona affatto nel 557, si sentono voci indignate (compresa la mia). Ma va bene così. Ho sistemato i pulsanti, grazie. Tuttavia, il rendering degli oggetti è ancora per nome, non per ordine di chiamata.
 

Ieri ho lottato con l'immagine bmp e non sono riuscito a caricarla sul grafico, e non so ancora se questo punto funziona 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 );
  }
Motivazione: