OBJ_RECTANGLE_LABEL

Dikdörtgen Etiket nesnesi.

ObjRectangleLabel

Not

Tutturma noktası koordinatları piksel bazında ayarlanır. Dikdörtgen etiket nesnesinin tutturma köşesinin, ENUM_BASE_CORNER sayımı ile seçilmesi mümkündür. Dikdörtgen etiketin kenar çizgileri ise, ENUM_BORDER_TYPE seçile bilir.

Bu nesne, özel grafiksel arayüzler oluşturmak ve tasarlamak için kullanılır.

Örnek

Aşağıdaki script, Dikdörtgen Etiket nesnesini çizelge üzerinde oluşturur ve taşır. Grafiksel nesne özelliklerini oluşturmak ve değiştirmek için özel fonksiyonlar geliştirilmiştir. Bu fonksiyonları kendi uygulamalarınızda da "aynı şekilde" kullanabilirsiniz.

 

//--- açıklama
#property description "Script, \"Dikdörtgen etiket\" grafiksel nesnesini oluşturur."
//--- betiğin çalıştırılması sırasında giriş parametreleri penceresini göster
#property script_show_inputs
//--- betiğin giriş parametreleri
input string           InpName="RectLabel";         // Etiket ismi
input color            InpBackColor=clrSkyBlue;     // Arkaplan rengi
input ENUM_BORDER_TYPE InpBorder=BORDER_FLAT;       // Kenar çizgisi tipi
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER// Tutturma için çizelge köşesi
input color            InpColor=clrDarkBlue;        // Düz kenar çizgisi rengi (Flat)
input ENUM_LINE_STYLE  InpStyle=STYLE_SOLID;        // Düz kenar çizgisi stili (Flat)
input int              InpLineWidth=3;              // Düz kenar çizgisi genişliği (Flat)
input bool             InpBack=false;               // Arka-plan nesnesi
input bool             InpSelection=true;           // Taşıma için vurgula
input bool             InpHidden=true;              // Nesne listesinde gizle
input long             InpZOrder=0;                 // Fare tıklaması önceliği
//+------------------------------------------------------------------+
//| Dikdörtgen etiketi oluştur                                       |
//+------------------------------------------------------------------+
bool RectLabelCreate(const long             chart_ID=0,               // çizelge tanımlayıcı
                     const string           name="RectLabel",         // etiket ismi
                     const int              sub_window=0,             // alt pencere indisi
                     const int              x=0,                      // X koordinatı
                     const int              y=0,                      // Y koordinatı
                     const int              width=50,                 // genişlik
                     const int              height=18,                // yükseklik
                     const color            back_clr=C'236,233,216',  // arkaplan rengi
                     const ENUM_BORDER_TYPE border=BORDER_SUNKEN,     // kenar tipi
                     const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER// tutturma için çizelge köşesi
                     const color            clr=clrRed,               // düz kenar rengi (Flat)
                     const ENUM_LINE_STYLE  style=STYLE_SOLID,        // düz kenar stili
                     const int              line_width=1,             // düz kenar kalınlığı
                     const bool             back=false,               // arkaplan nesnesi
                     const bool             selection=false,          // taşıma için vurgula
                     const bool             hidden=true,              // nesne listesinde gizle
                     const long             z_order=0)                // fare tıklaması için öncelik
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- bir dikdörtgen etiket oluştur
   if(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": dikdörtgen etiketin oluşturulması başarısız oldu! Hata kodu = ",GetLastError());
      return(false);
     }
//--- etiket koordinatlarını ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- etiket boyutunu ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- arkaplan rengini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- kenar çizgisi tipini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border);
//--- tanımlanan nokta koordinatlarına göre çapa (tutturma) köşesini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- düz kenar rengini ayarla (Flat modunda)
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- düz kenar çizgisi stilini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- düz kenar çizgisi genişliğini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width);
//--- ön-planda (false) veya arkaplanda (true) göster
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- etiketi fare ile taşıma modunu etkinleştir (true) veya devre dışı bırak (false)
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- nesne listesinde grafiksel nesnenin adını sakla (true) veya göster (false)
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- çizelge üzerinde fare tıklaması olayının alınması için özellik ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Dikdörtgen etiketi taşı                                          |
//+------------------------------------------------------------------+
bool RectLabelMove(const long   chart_ID=0,       // çizelge kimliği
                   const string name="RectLabel"// etiket ismi
                   const int    x=0,              // X koordinatı
                   const int    y=0)              // Y koordinatı
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- dikdörtgen etiketi taşı
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": etiketin X koordinatı taşınamadı! Hata kodu = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": etiketin Y koordinatı taşınamadı! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Dikdörtgen etiketin boyutunu değiştir                            |
//+------------------------------------------------------------------+
bool RectLabelChangeSize(const long   chart_ID=0,       // çizelge kimliği
                         const string name="RectLabel"// etiket adı
                         const int    width=50,         // etiket genişliği
                         const int    height=18)        // etiket yüksekliği
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- etiket boyutunu değiştir
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": etiketin genişliği değiştirilemedi! Hata kodu = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": etiketin yüksekliği değiştirilemedi! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Dikdörtgen etiketin kenar tipini değiştir                        |
//+------------------------------------------------------------------+
bool RectLabelChangeBorderType(const long             chart_ID=0,           // çizelge kimliği
                               const string           name="RectLabel",     // etiket ismi
                               const ENUM_BORDER_TYPE border=BORDER_SUNKEN// kenar tipi
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- kenar tipini değiştir
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border))
     {
      Print(__FUNCTION__,
            ": kenar tipi değiştirilemedi! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Dikdörtgen etiketi sil                                           |
//+------------------------------------------------------------------+
bool RectLabelDelete(const long   chart_ID=0,       // çizelge kimliği
                     const string name="RectLabel"// etiket ismi
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- etiketi sil
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": dikdörtgen etiketin silinmesi başarısız! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- çizelge penceresi büyüklüğü
   long x_distance;
   long y_distance;
//--- pencere büyüklüğünü ayarla
   if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
     {
      Print("Çizelgenin genişlik değeri alınamadı! Hata kodu = ",GetLastError());
      return;
     }
   if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
     {
      Print("Çizelgenin yükseklik değeri alınamadı! Hata kodu = ",GetLastError());
      return;
     }
//--- dikdörtgen etiketin koordinatlarını tanımla
   int x=(int)x_distance/4;
   int y=(int)y_distance/4;
//--- etiket boyutunu ayarla
   int width=(int)x_distance/4;
   int height=(int)y_distance/4;
//--- bir dikdörtgen etiket oluştur
   if(!RectLabelCreate(0,InpName,0,x,y,width,height,InpBackColor,InpBorder,InpCorner,
      InpColor,InpStyle,InpLineWidth,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- çizelgeyi yenile ve bir saniye bekle
   ChartRedraw();
   Sleep(1000);
//--- dikdörtgen etiketin boyutunu değiştir
   int steps=(int)MathMin(x_distance/4,y_distance/4);
   for(int i=0;i<steps;i++)
     {
      //--- yeniden boyutlandır
      width+=1;
      height+=1;
      if(!RectLabelChangeSize(0,InpName,width,height))
         return;
      //--- script işlemi devre dışı bırakıldı mı kontrol et
      if(IsStopped())
         return;
      //--- çizelgeyi yeniden çiz ve 0.01 saniye bekle
      ChartRedraw();
      Sleep(10);
     }
//--- 1 saniyelik gecikme
   Sleep(1000);
//--- kenar tipini değiştir
   if(!RectLabelChangeBorderType(0,InpName,BORDER_RAISED))
      return;
//--- çizelgeyi yenile ve 1 saniye bekle
   ChartRedraw();
   Sleep(1000);
//--- kenar tipini değiştir
   if(!RectLabelChangeBorderType(0,InpName,BORDER_SUNKEN))
      return;
//--- çizelgeyi yenile ve 1 saniye bekle
   ChartRedraw();
   Sleep(1000);
//--- etiketi sil
   RectLabelDelete(0,InpName);
   ChartRedraw();
//--- 1 saniye bekle
   Sleep(1000);
//---
  }