OBJ_BUTTON

Düğme nesnesi.

ObjButton

Not

Tutturma noktası koordinatları piksel bazında ayarlanır. Düğmenin tutturma köşesini ENUM_BASE_CORNER sayımından seçebilirsiniz.

Örnek

Aşağıdaki script, düğme nesnesini oluşturur ve çizelge üzerinde 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, çizelge üzerinde bir düğme 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="Button";            // Düğme ismi
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER// Tutturma için çizelge köşesi
input string           InpFont="Arial";             // Yazı tipi
input int              InpFontSize=14;              // Yazı tipi büyüklüğü
input color            InpColor=clrBlack;           // Metin rengi
input color            InpBackColor=C'236,233,216'// Arka-plan rengi
input color            InpBorderColor=clrNONE;      // Kenar rengi
input bool             InpState=false;              // Basılı/Serbest
input bool             InpBack=false;               // Arka-plan nesnesi
input bool             InpSelection=false;          // Taşıma için vurgula
input bool             InpHidden=true;              // Nesne listesinde gizle
input long             InpZOrder=0;                 // Fare tıklaması önceliği
//+------------------------------------------------------------------+
//| Düğmeyi oluştur                                                  |
//+------------------------------------------------------------------+
bool ButtonCreate(const long              chart_ID=0,               // çizelge kimliği
                  const string            name="Button",            // düğme 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,                 // düğme genişliği
                  const int               height=18,                // düğme yüksekliği
                  const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER// tutturulacak çizelge köşesi
                  const string            text="Button",            // metin
                  const string            font="Arial",             // yazı tipi
                  const int               font_size=10,             // yazı tipi boyutu
                  const color             clr=clrBlack,             // metin rengi
                  const color             back_clr=C'236,233,216',  // arka-plan rengi
                  const color             border_clr=clrNONE,       // kenar rengi
                  const bool              state=false,              // basılı serbest
                  const bool              back=false,               // arkaplanda
                  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();
//--- düğmeyi oluştur
   if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": düğmenin oluşturulması başarısız oldu! Hata kodu = ",GetLastError());
      return(false);
     }
//--- düğme koordinatlarını ayarla 
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- düğme boyutunu ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- tanımlanan nokta koordinatlarına göre çapa (tutturma) köşesini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- metni ayarla
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- metin yazı tipini ayarla
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- yazı tipi boyutunu ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- metin rengini ayara
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- arkaplan rengini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- kenar çizgisinin rengini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
//--- ön-planda (false) veya arkaplanda (true) göster
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- set button state
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- düğmeyi 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);
  }
//+------------------------------------------------------------------+
//| Düğmeyi taşı                                                     |
//+------------------------------------------------------------------+
bool ButtonMove(const long   chart_ID=0,    // çizelge kimliği
                const string name="Button"// düğme ismi
                const int    x=0,           // X koordinatı
                const int    y=0)           // Y koordinatı
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- düğmeyi taşı
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": düğmenin X koordinatı taşınamadı! Hata kodu = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": düğmenin Y koordinatı taşınamadı! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Düğme boyutunu değiştir                                          |
//+------------------------------------------------------------------+
bool ButtonChangeSize(const long   chart_ID=0,    // çizelge kimliği
                      const string name="Button"// düğme ismi
                      const int    width=50,      // düğme genişliği
                      const int    height=18)     // düğme yüksekliği
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- düğme boyutunu değiştir
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": düğme genişliği değiştirilemedi! Hata kodu = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": düğme yüksekliği değiştirilemedi! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Düğmenin bağlanacağı çizelge köşesini değiştir                   |
//+------------------------------------------------------------------+
bool ButtonChangeCorner(const long             chart_ID=0,               // çizelge kimliği
                        const string           name="Button",            // düğme ismi
                        const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER// tutturmanın yapılacağı çizelge köşesi
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- tutturma köşesini değiştir
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner))
     {
      Print(__FUNCTION__,
            ": tutturma köşesi değiştirilemedi! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Düğme metnini değiştir                                           |
//+------------------------------------------------------------------+
bool ButtonTextChange(const long   chart_ID=0,    // çizelge kimliği
                      const string name="Button"// düğme ismi
                      const string text="Text")   // metin
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- nesne metnini değiştir
   if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,text))
     {
      Print(__FUNCTION__,
            ": metin değiştirilemedi! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Düğmeyi sil                                                      |
//+------------------------------------------------------------------+
bool ButtonDelete(const long   chart_ID=0,    // çizelge kimliği
                  const string name="Button"// düğme ismi
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- düğmeyi sil
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": düğme silinemedi! 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;
     }
//--- düğme boyutunun değiştirilmesi için adım değerini tanımla
   int x_step=(int)x_distance/32;
   int y_step=(int)y_distance/32;
//--- düğmenin koordinatlarını ve boyutunu ayarla
   int x=(int)x_distance/32;
   int y=(int)y_distance/32;
   int x_size=(int)x_distance*15/16;
   int y_size=(int)y_distance*15/16;
//--- düğmeyi oluştur
   if(!ButtonCreate(0,InpName,0,x,y,x_size,y_size,InpCorner,"Press",InpFont,InpFontSize,
      InpColor,InpBackColor,InpBorderColor,InpState,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- çizelgeyi yeniden çiz
   ChartRedraw();
//--- düğmeyi döngü içinde indirge
   int i=0;
   while(i<13)
     {
      //--- yarım saniyelik gecikme
      Sleep(500);
      //--- düğmeyi basılı konuma getir
      ObjectSetInteger(0,InpName,OBJPROP_STATE,true);
      //--- çizelgeyi yenile ve 0.2 saniye bekle
      ChartRedraw();
      Sleep(200);
      //--- koordinatları ve düğme büyüklüğünü yeniden tanımla
      x+=x_step;
      y+=y_step;
      x_size-=x_step*2;
      y_size-=y_step*2;
      //--- düğmeyi indirge
      ButtonMove(0,InpName,x,y);
      ButtonChangeSize(0,InpName,x_size,y_size);
      //--- düğmeyi serbest duruma getir
      ObjectSetInteger(0,InpName,OBJPROP_STATE,false);
      //--- çizelgeyi yenile
      ChartRedraw();
      //--- script işlemi devre dışı bırakıldı mı kontrol et
      if(IsStopped())
         return;
      //--- döngü sayacını artır
      i++;
     }
//--- yarım saniyelik gecikme
   Sleep(500);
//--- düğmeyi sil
   ButtonDelete(0,InpName);
   ChartRedraw();
//--- 1 saniye bekle
   Sleep(1000);
//---
  }