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は移動せず、中央に表示されます。まあバーバリアンはすでに記述していますが、直したのか何なのかは不明です。

 
pro_:

私もBarbarianさんと同じように、OBJ_LABELに同じ関数を使用して、オブジェクトに問題があります。昨日の朝、ここに書きました。原点が見えるグラフの外、グラフの端ではなく、ウィンドウの端にあるような気がするのですが。OBJ_LABELを右下から座標+1して表示させれば、すべてうまくいきます。チャートの上端にあるオブジェクトも消えてしまうので、上に行く必要があります。チャートをフルスクリーンに拡大しても、OBJ_LABELは移動せず、中央に表示されます。まあバーバリアンはすでに記述していますが、直したのか何なのかは不明です。


私も同じものを持っています。Bild 557、先ほど更新しました。画面にたくさんの情報が表示されているEAがあるのですが、今はチャートがカオスになっているだけです。

テキスト全体(OBJ_LABEL)に命が宿る。また、座標がどのように選択されているのかが不明で、ジャンプを選択すると面白いのですが、その場所ではなく、ランダムに選択されているような気がします。

ビルド555ではすべて順調でした。

 
フラッシュドライブで作業する場合、つまりフラッシュドライブ上のすべてのアカウントは常にリセットされます・・・。
 

旧来のフォー式のグラフィカルオブジェクトの制御とともに、ファイブ式のオブジェクト制御を行って います。

残念ながら、バグがないわけではありません。幸いなことに、多くのバグが修正されています。

 
stringo:

旧来の4と合わせて、5的なオブジェクト管理をやっています。

残念ながら、バグが

ないわけではありません。

幸いなことに、すでに多くのバグが修正されています。


すべてクリアしています。誰も、すべてが完全にミスなく進むとは思っていないと思います。ただ、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 );
  }