OBJ_EDIT

"Düzenle" nesnesi.

ObjEdit

Not

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

Ayrıca, "Düzenle" nesnesi içinde kullanacağınız metin hizalama tipini de ENUM_ALIGN_MODE sayımından seçebilirsiniz.

Örnek

Aşağıdaki script, "Düzenle" 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, \"Düzenle\" nesnesini çizelge üzerinde 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="Edit";              // Nesne ismi
input string           InpText="Text";              // Nesne metni
input string           InpFont="Arial";             // Yazı tipi
input int              InpFontSize=14;              // Yazı tipi büyüklüğü
input ENUM_ALIGN_MODE  InpAlign=ALIGN_CENTER;       // Metin hizalama tipi
input bool             InpReadOnly=false;           // Düzenlenebilirlik
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER// Tutturma için çizelge köşesi
input color            InpColor=clrBlack;           // Metin rengi
input color            InpBackColor=clrWhite;       // Arka-plan rengi
input color            InpBorderColor=clrBlack;     // Kenar çizgisi rengi
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üzenle" nesnesini oluştur                                      |
//+------------------------------------------------------------------+
bool EditCreate(const long             chart_ID=0,               // çizelge tanımlayıcısı
                const string           name="Edit",              // nesne 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 string           text="Text",              // metin
                const string           font="Arial",             // yazı tipi
                const int              font_size=10,             // yazı tipi boyutu
                const ENUM_ALIGN_MODE  align=ALIGN_CENTER,       // hizalama tipi
                const bool             read_only=false,          // düzenlenebilirlik
                const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER// çizelge üzerindeki tutturma köşesi
                const color            clr=clrBlack,             // metin rengi
                const color            back_clr=clrWhite,        // arka-plan rengi
                const color            border_clr=clrNONE,       // kenar çizgisi rengi
                const bool             back=false,               // arka-plan nesnesi
                const bool             selection=false,          // taşıma için vurgula
                const bool             hidden=true,              // nesne listesinde vurgula
                const long             z_order=0)                // Fare tıklaması için öncelik
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- düzenleme alanı oluştur
   if(!ObjectCreate(chart_ID,name,OBJ_EDIT,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": \"Düzenle\" nesnesi oluşturulamadı! Hata kodu = ",GetLastError());
      return(false);
     }
//--- nesne koordinatlarının ayarlanması
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- nesne büyüklüğünü ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- 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);
//--- nesne içindeki metin hizalama tipini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_ALIGN,align);
//--- sadece okunur modu etkinleştir (true) veya iptal et (false)
   ObjectSetInteger(chart_ID,name,OBJPROP_READONLY,read_only);
//--- nesnenin tanımlanan koordinatlarına göre, çizelge köşesini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- 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);
//--- 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);
  }
//+------------------------------------------------------------------+
//| "Düzenle" nesnesini taşı                                         |
//+------------------------------------------------------------------+
bool EditMove(const long   chart_ID=0,  // çizelge kimliği
              const string name="Edit"// nesne ismi
              const int    x=0,         // X koordinatı
              const int    y=0)         // Y koordinatı
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- nesneyi taşı
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": nesnenin X koordinatını taşıma başarısız! Hata kodu = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": nesnenin Y koordinatını taşıma başarısız! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| "Düzenle" nesnesini yeniden boyutlandır                          |
//+------------------------------------------------------------------+
bool EditChangeSize(const long   chart_ID=0,  // çizelge kimliği
                    const string name="Edit"// nesne ismi
                    const int    width=0,     // genişlik
                    const int    height=0)    // yükseklik
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- nesne boyutunu değiştir
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": nesne genişliğinin değiştirilmesi başarısız oldu! Hata kodu = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": nesne yüksekliğinin değiştirilmesi başarısız oldu! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| "Düzenle" nesnesinin metnini değiştir                            |
//+------------------------------------------------------------------+
bool EditTextChange(const long   chart_ID=0,  // çizelge kimliği
                    const string name="Edit"// nesne 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üzenle" nesnesinin metnine dönüş yap                           |
//+------------------------------------------------------------------+
bool EditTextGet(string      &text,        // metin
                 const long   chart_ID=0,  // çizelge tanımlayıcısı
                 const string name="Edit"// nesne ismi
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- nesne metnini al
   if(!ObjectGetString(chart_ID,name,OBJPROP_TEXT,0,text))
     {
      Print(__FUNCTION__,
            ": metnin alınması başarısız oldu! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| "Düzenle" nesnesini sil                                          |
//+------------------------------------------------------------------+
bool EditDelete(const long   chart_ID=0,  // çizelge kimliği
                const string name="Edit"// nesne ismi
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- etiketi sil
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": \"Düzenle\" nesnesi 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üzenleme alanını değiştirmek için adım değerini belirle
   int x_step=(int)x_distance/64;
//--- düzenle alanı koordinatlarını ve boyutunu ayarla
   int x=(int)x_distance/8;
   int y=(int)y_distance/2;
   int x_size=(int)x_distance/8;
   int y_size=InpFontSize*2;
//--- metni yerel değişkende sakla
   string text=InpText;
//--- düzenleme alanı oluştur
   if(!EditCreate(0,InpName,0,x,y,x_size,y_size,InpText,InpFont,InpFontSize,InpAlign,InpReadOnly,
      InpCorner,InpColor,InpBackColor,InpBorderColor,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- çizelgeyi yenile ve 1 saniye bekle
   ChartRedraw();
   Sleep(1000);
//--- düzenleme alanını uzat
   while(x_size-x<x_distance*5/8)
     {
      //--- düzenleme alanının genişliğini artır
      x_size+=x_step;
      if(!EditChangeSize(0,InpName,x_size,y_size))
         return;
      //--- script işlemi devre dışı bırakıldı mı kontrol et
      if(IsStopped())
         return;
      //--- çizelgeyi yenile ve 0.05 saniye bekle
      ChartRedraw();
      Sleep(50);
     }
//--- yarım saniyelik gecikme
   Sleep(500);
//--- metni değiştir
   for(int i=0;i<20;i++)
     {
      //--- sona ve başa "+" ekle
      text="+"+text+"+";
      if(!EditTextChange(0,InpName,text))
         return;
      //--- script işlemi devre dışı bırakıldı mı kontrol et
      if(IsStopped())
         return;
      //--- çizelgeyi yeniden çiz ve 0.1 saniye bekle
      ChartRedraw();
      Sleep(100);
     }
//--- yarım saniyelik gecikme
   Sleep(500);
//--- düzenleme alanını sil
   EditDelete(0,InpName);
   ChartRedraw();
//--- 1 saniye bekle
   Sleep(1000);
//---
  }