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