//--- açıklama
#property description "Script \"Bitmap Etiketi\" 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="BmpLabel"; // Etiket ismi
input string InpFileOn="\\Images\\dollar.bmp"; // "On" modu için dosya ismi
input string InpFileOff="\\Images\\euro.bmp"; // "Off" modu için dosya ismi
input bool InpState=false; // Etiket basılı/serbest
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER; // Tutturma (çapa) yapılacak çizelge köşesi
input ENUM_ANCHOR_POINT InpAnchor=ANCHOR_CENTER; // Çapa tipi
input color InpColor=clrRed; // Vurgulandığında, kenar çizgisinin rengi
input ENUM_LINE_STYLE InpStyle=STYLE_SOLID; // Vurgulandığında çizgi stili
input int InpPointWidth=1; // Taşıma için nokta boyutu
input bool InpBack=false; // Arka-plan nesnesi
input bool InpSelection=false; // Taşımak için vurgula
input bool InpHidden=true; // Nesne listesinde gizle
input long InpZOrder=0; // Fare tıklaması için öncelik
//+------------------------------------------------------------------+
//| Bitmap nesnesini oluştur |
//+------------------------------------------------------------------+
bool BitmapLabelCreate(const long chart_ID=0, // çizelge kimliği
const string name="BmpLabel", // etiket ismi
const int sub_window=0, // alt-pencere indisi
const int x=0, // X koordinatı
const int y=0, // Y koordinatı
const string file_on="", // "On" modunda resim
const string file_off="", // "Off" modunda resim
const int width=0, // X koordinatının görünürlük alanı
const int height=0, // Y koordinatının görünürlük alanı
const int x_offset=10, // X ekseninde görünürlük alanı kayması
const int y_offset=10, // Y ekseninde görünürlük alanı kayması
const bool state=false, // basılı/serbest
const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // tutturma için çizelge köşesi
const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // çapa tipi
const color clr=clrRed, // kenar çizgisi rengi (vurgulandığında)
const ENUM_LINE_STYLE style=STYLE_SOLID, // kenar çizgisi stili (vurgulandığında)
const int point_width=1, // taşıma noktası boyutu
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ı önceliği
{
//--- hata değerini sıfırla
ResetLastError();
//--- bir bitmap etiketi oluştur
if(!ObjectCreate(chart_ID,name,OBJ_BITMAP_LABEL,sub_window,0,0))
{
Print(__FUNCTION__,
": \"Bitmap Etiketi\" nesnesi oluşturulması başarısız! Hata kodu = ",GetLastError());
return(false);
}
//--- On ve Off modları için görüntüleri ayarla
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,0,file_on))
{
Print(__FUNCTION__,
": "On" modu için resim yüklenemedi! Hata kodu = ",GetLastError());
return(false);
}
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,1,file_off))
{
Print(__FUNCTION__,
": "Off" modu için resim yüklenemedi! Hata kodu = ",GetLastError());
return(false);
}
//--- etiket koordinatlarını ayarla
ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- resmin görünürlük alanını ayarla; eğer yükseklik ve genişlik değerleri
//--- sırasıyla kaynak resmin genişlik ve yüksekliğini geçerse
//--- etiket çizilmez; aksi durumda ise,
//--- sadece bu değerler karşılık gelen kısım çizilir
ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- resmin görünürlük alanında görüntülenecek kısmını ayarla
//--- öntanımlı kısım resmin sol üst alanıdır; değerler,
//--- resmin başka bir kısmının gösterilmesi için bir kaydırma gerçekleştirir
ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset);
ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset);
//--- etiket durumunu tanımla (basılı veya serbest)
ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- tanımlanan nokta koordinatlarına göre çapa (tutturma) köşesini ayarla
ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- tutturma noktası tipini ayarla
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- nesne vurgulama modu etkinken kenar çizgisi rengini ayarla
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- nesne vurgulama modu etkinken kenar çizgisinin stilini ayarla
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- nesne taşıma için tutturma noktası boyutunu ayarla
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_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);
}
//+------------------------------------------------------------------+
//| Bitmap etiket nesnesi için yeni bir resim oluştur |
//+------------------------------------------------------------------+
bool BitmapLabelSetImage(const long chart_ID=0, // çizelge kimliği
const string name="BmpLabel", // etiket ismi
const int on_off=0, // şekillendirici (On veya Off)
const string file="") // dosya adresi
{
//--- hata değerini sıfırla
ResetLastError();
//--- resim dosyasının adresini ayarla
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,on_off,file))
{
Print(__FUNCTION__,
": resmin yüklenmesi başarısız oldu! Hata kodu = ",GetLastError());
return(false);
}
//--- başarılı çalıştırma
return(true);
}
//+------------------------------------------------------------------+
//| Bitmap Etiket nesnesini taşı |
//+------------------------------------------------------------------+
bool BitmapLabelMove(const long chart_ID=0, // çizelge kimliği
const string name="BmpLabel", // etiket 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);
}
//+------------------------------------------------------------------+
//| Nesnenin görünürlük alanını değiştir |
//+------------------------------------------------------------------+
bool BitmapLabelChangeSize(const long chart_ID=0, // çizelge kimliği
const string name="BmpLabel", // etiket ismi
const int width=0, // etiket genişliği
const int height=0) // etiket yüksekliği
{
//--- 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);
}
//+--------------------------------------------------------------------+
//| Görünürlük alanının üst sağ köşesinin koordinatlarını değiştir |
//+--------------------------------------------------------------------+
bool BitmapLabelMoveVisibleArea(const long chart_ID=0, // çizelge tanımlayıcısı
const string name="BmpLabel", // etiket ismi
const int x_offset=0, // görünürlük alanı X koordinatı
const int y_offset=0) // görünürlük alanı Y koordinatı
{
//--- hata değerini sıfırla
ResetLastError();
//--- nesnenin görünürlük alanı koordinatlarını değiştir
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset))
{
Print(__FUNCTION__,
": görünürlük alanının X koordinatının değiştirilmesi başarısız! Hata kodu = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset))
{
Print(__FUNCTION__,
": görünürlük alanının X koordinatının değiştirilmesi başarısız! Hata kodu = ",GetLastError());
return(false);
}
//--- başarılı çalıştırma
return(true);
}
//+------------------------------------------------------------------+
//| "Bitmap Etiket" nesnesini sil |
//+------------------------------------------------------------------+
bool BitmapLabelDelete(const long chart_ID=0, // çizelge kimliği
const string name="BmpLabel") // etiket ismi
{
//--- hata değerini sıfırla
ResetLastError();
//--- etiketi sil
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": \"Bitmap etiket\" nesnesinin silinmesi başarısız oldu! 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;
}
//--- bitmap etiketinin koordinatlarını belirle
int x=(int)x_distance/2;
int y=(int)y_distance/2;
//--- etiket büyüklüğünü ve görünürlük alanı koordinatlarını ayarla
int width=32;
int height=32;
int x_offset=0;
int y_offset=0;
//--- bitmap etiketini pencerenin ortasına yerleştir
if(!BitmapLabelCreate(0,InpName,0,x,y,InpFileOn,InpFileOff,width,height,x_offset,y_offset,InpState,
InpCorner,InpAnchor,InpColor,InpStyle,InpPointWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- çizelgeyi yenile ve bir saniye bekle
ChartRedraw();
Sleep(1000);
//--- etiketin görünürlük alanı boyutunu, döngü içinde değiştir
for(int i=0;i<6;i++)
{
//--- görünürlük alanı boyutunu değiştir
width--;
height--;
if(!BitmapLabelChangeSize(0,InpName,width,height))
return;
//--- script işlemi devre dışı bırakıldı mı kontrol et
if(IsStopped())
return;
//--- çizelgeyi yenile
ChartRedraw();
// 0.3 saniyelik gecikme
Sleep(300);
}
//--- 1 saniyelik gecikme
Sleep(1000);
//--- etiketin görünürlük alanı koordinatlarını, döngü içinde değiştir
for(int i=0;i<2;i++)
{
//--- etiketin görünürlük alanı koordinatlarını değiştir
x_offset++;
y_offset++;
if(!BitmapLabelMoveVisibleArea(0,InpName,x_offset,y_offset))
return;
//--- script işlemi devre dışı bırakıldı mı kontrol et
if(IsStopped())
return;
//--- çizelgeyi yenile
ChartRedraw();
// 0.3 saniyelik gecikme
Sleep(300);
}
//--- 1 saniyelik gecikme
Sleep(1000);
//--- etiketi sil
BitmapLabelDelete(0,InpName);
ChartRedraw();
//--- 1 saniyelik gecikme
Sleep(1000);
//---
}
|