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