MetaTrader 4 Build 529 Beta, Yeni Derleyici ile Yayınlandı - sayfa 114

 

557 oluşturun.

OBJ_LABEL , bir fonksiyondan ayarlandığında merkeze doğru hareket eder, onu seçmeye değer ve sağ tarafa doğru hareket eder, kısmen grafik penceresinin sınırlarının ötesine geçer. Çapa sağ üst köşededir. İşlev:

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

Bu işlevi çağırmak:

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

554 ve daha eski yapı sürümlerinin önceki sürümlerinde, her şey olması gerektiği gibi çalıştı, merkeze çıkış yoktu ve ardından grafik penceresinin sınırlarının dışında sağa, her şey hemen belirtilen sınırlara bağlandı.

 

Bir alt penceredeki metin nesnelerinin hatalı davranışı yeniden oluşturuldu. Düzelteceğiz.

Lütfen bekle.

 
artmedia70 :

Ama şimdi fareyle üzerlerine tıklıyorum ve hepsi yerlerine yerleştirilecek:


Teşekkür ederim. çoğaltılmış ve düzeltilmiş
 
557. yapıda, tüm OBJ_EDIT koordinatları her iki koordinatta da 1 piksel aşağı kaydırıldı. Nesneler doğru bir şekilde yerleştirildi, şimdi her şey biraz sağa ve aşağı hareket etti.
Ayrıca, OBJ_LABEL'i programlı olarak hareket ettiremezsiniz. 5'ten gelen bu işlev 555'te mükemmel çalıştı, kodumu değiştirmedim.

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

benzer bir işlev düğmeler için çalışır, ancak OBJ_LABEL için çalışmaz.

 

OBJ_LABEL için aynı işlevi kullanarak Barbarian ile aynı nesne sorunlarına sahibim. Dün sabah buraya yazdım. Görünen o ki, koordinatların orijini görünür grafiğin dışında, grafiğin kenarında değil, pencerenin kenarında. OBJ_LABEL'i sağ alt köşeden +1 koordinatlarıyla görüntülerseniz, her şey mükemmel bir şekilde görünür olacaktır. Grafiğin üst kenarındaki nesneler de kayboluyor, görünüşe göre yukarı çıkıyor. Grafik tam ekrana büyütüldüğünde, OBJ_LABEL kaymaz, ortada görünür. Barbar zaten anlatmıştı ama senin düzelttiğin ya da ne olduğu belli değil.

 
pro_ :

OBJ_LABEL için aynı işlevi kullanarak Barbar ile aynı nesne sorunlarına sahibim. Dün sabah buraya yazdım. Görünen o ki, koordinatların orijini görünür grafiğin dışında, grafiğin kenarında değil, pencerenin kenarında. OBJ_LABEL'i sağ alt köşeden +1 koordinatlarıyla görüntülerseniz, her şey mükemmel bir şekilde görünür olacaktır. Grafiğin üst kenarındaki nesneler de kayboluyor, görünüşe göre yukarı çıkıyor. Grafik tam ekrana büyütüldüğünde, OBJ_LABEL kaymaz, ortada görünür. Barbar zaten anlatmıştı ama senin düzelttiğin ya da ne olduğu belli değil.


Bende de aynısı var. 557 oluşturun, yeni güncellendi. Ekranda büyük miktarda bilgi görüntülenen bir danışmanım var, şimdi grafikte kaos basit.

Tüm metinlerin ( OBJ_LABEL ) kendine ait bir ömrü vardır. Üstelik koordinatların nasıl seçildiği belli değil, sanki rastgele bir his var.İlginç olan, seçildiğinde zıplıyorlar, ama tamamen yersiz.

555 derlemesinde her şey yolundaydı.

 
Bir flash sürücüyle çalışırken, yani her şey bir flash sürücüde, tüm hesaplar sürekli uçuyor ....
 

Eski dört tabanlı grafik nesne yönetimi ile birlikte beşli stilde nesne yönetimi yapıyoruz.

Ne yazık ki, hiçbir hata yoktu. Neyse ki, birçok hata zaten düzeltildi.

 
stringo :

Eski dört tabanlı grafik nesne yönetimi ile birlikte beşli stilde nesne yönetimi yapıyoruz.

Ne yazık ki, hiçbir hata yoktu. Neyse ki, birçok hata zaten düzeltildi.


Bu çok açık. Bence hiç kimse her şeyin kesinlikle hatasız gitmesini beklemiyor. Sadece 555'te çalışan bir şey 556'da daha da kötüleştiğinde veya 557'de hiç çalışmadığında (benimki dahil) öfkeli sesler çıkıyor. Ve böylece her şey yolunda. Düğmeler çalışıyor, teşekkürler. Doğru, çizim nesneleri hala çağrı sırasına göre değil, ada göredir.
 

dün bir bmp resmi ile uğraşıyordum ve çizelgeye yükleyemedim ve bu anın işe yarayıp yaramadığını bilmiyorum ...

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