EventChartCustom

Bu fonksiyon, belirtilen çizelge için özel bir olay oluşturur.

bool  EventChartCustom(
   long    chart_id,            // olayın alındığı çizelgenin tanımlayıcısı
   ushort  custom_event_id,     // olay tanımlayıcı
   long    lparam,              // long tipli parametre
   double  dparam,              // double tipli parametre
   string  sparam               // string tipli olay parametresi
   );

Parametreler

chart_id

[in] Çizelge tanımlayıcısı. 0, mevcut çizelge anlamına gelir.

custom_event_id

[in] Kullanıcı tanımlı olaylar için tanımlayıcı. Bu tanımlayıcı otomatik olarak CHARTEVENT_CUSTOM değerine eklenir ve tamsayı tipine dönüştürür.

lparam

[in] OnChartEvent fonksiyonuna geçirilen long tipli olay parametresi.

dparam

[in] OnChartEvent fonksiyonuna geçirilen double tipli olay parametresi.

sparam

[in] OnChartEvent fonksiyonuna geçirilen string tipli olay parametresi. Eğer dizgi 63 karakterden uzunsa budanır.

Dönüş değeri

Eğer bir özel olay, çizelgenin olaylar kuyruğuna başarılı bir şekilde yerleştirilmişse, 'true' dönüşü yapar Başarısızlık durumunda ise 'false' dönüşü yapar. Bir hata kodu almak için GetLastError() fonksiyonunu kullanın.

Not

Belirtilen çizelgeye tutturulmuş Uzman Danışmanlar ve göstergeler, olayı işlemek için OnChartEvent(int event_id, long& lparam, double& dparam, string& sparam) fonksiyonunu kullanırlar.

Her olay tipi için, OnChartEvent() fonksiyonunun giriş parametreleri, mevcut olayı işleyebilmek için kesin değerlere sahiptir. Bu parametreler ile geçirilen olaylar ve değerler aşağıdaki tabloda listelenmiştir.

Olay

id parametresinin değeri

lparam parametresinin değeri

dparam parametresinin değeri

sparam parametresinin değeri

Tuş darbesi olayı

CHARTEVENT_KEYDOWN

basılmış bir tuşun kodu

Tekrar sayısı (kullanıcının tuşa basılı tutması sonucu tekrarlanan tuş darbelerinin sayısı)

Klavye tuşlarının durumunu tarif eden bir bit maskesinin dizgi değeri

Fare olayı (çizelge için CHART_EVENT_MOUSE_MOVE=true şeklinde ayarlanmışsa)

CHARTEVENT_MOUSE_MOVE

X koordinatı

Y koordinatı

Fare tuşlarının durumunu tarif eden bir bit maskesinin string tipli değeri

Grafiksel nesne oluşturma olayı (çizelge için CHART_EVENT_OBJECT_CREATE=true şeklinde ayar yapılmışsa)

CHARTEVENT_OBJECT_CREATE

Oluşturulan grafiksel nesnenin adı

Özellikler iletişim kutusu ile bir nesnenin özelliğinin değiştirilmesi olayı

CHARTEVENT_OBJECT_CHANGE

Değiştirilen grafiksel nesnenin adı

Grafiksel nesnenin silinmesi olayı (çizelge için CHART_EVENT_OBJECT_DELETE=true şeklinde ayarlanmışsa)

CHARTEVENT_OBJECT_DELETE

Silinen grafiksel nesnenin ismi

Çizelge üzerinde fare tıklaması olayı

CHARTEVENT_CLICK

X koordinatı

Y koordinatı

Çizelge üzerindeki bir grafiksel nesnenin fare ile tıklanması olayı

CHARTEVENT_OBJECT_CLICK

X koordinatı

Y koordinatı

Olayın gerçekleştiği grafiksel nesnenin ismi

Grafiksel nesnenin fare ile sürüklenmesi olayı

CHARTEVENT_OBJECT_DRAG

Taşınan grafiksel nesnenin adı

LabelEdit grafiksel nesnesinin giriş kutusunda yapılan metin düzenleme işinin bitmesi olayı

CHARTEVENT_OBJECT_ENDEDIT

Metin düzenlemesi tamamlanan LabelEdit grafiksel nesnesinin adı

Bir çizelge üzerindeki değişimlerin olayı

CHARTEVENT_CHART_CHANGE

N sayısının altındaki kullanıcı olayının kimliği

CHARTEVENT_CUSTOM+N

EventChartCustom() fonksiyonu tarafından ayarlanmış değer

EventChartCustom() fonksiyonu tarafından ayarlanmış değer

EventChartCustom() fonksiyonu tarafından ayarlanmış değer

Örnek:

//+------------------------------------------------------------------+
//|                                            ButtonClickExpert.mq5 |
//|                         Copyright 2000-2024, MetaQuotes Ltd. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
 
string buttonID="Button";
string labelID="Info";
int broadcastEventID=5000;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Özel olaylar göndermek için bir düğme oluştur
   ObjectCreate(0,buttonID,OBJ_BUTTON,0,100,100);
   ObjectSetInteger(0,buttonID,OBJPROP_COLOR,clrWhite);
   ObjectSetInteger(0,buttonID,OBJPROP_BGCOLOR,clrGray);
   ObjectSetInteger(0,buttonID,OBJPROP_XDISTANCE,100);
   ObjectSetInteger(0,buttonID,OBJPROP_YDISTANCE,100);
   ObjectSetInteger(0,buttonID,OBJPROP_XSIZE,200);
   ObjectSetInteger(0,buttonID,OBJPROP_YSIZE,50);
   ObjectSetString(0,buttonID,OBJPROP_FONT,"Arial");
   ObjectSetString(0,buttonID,OBJPROP_TEXT,"Button");
   ObjectSetInteger(0,buttonID,OBJPROP_FONTSIZE,10);
   ObjectSetInteger(0,buttonID,OBJPROP_SELECTABLE,0);
 
//--- Bilgiyi görüntülemek için bir etiket oluştur
   ObjectCreate(0,labelID,OBJ_LABEL,0,100,100);
   ObjectSetInteger(0,labelID,OBJPROP_COLOR,clrRed);
   ObjectSetInteger(0,labelID,OBJPROP_XDISTANCE,100);
   ObjectSetInteger(0,labelID,OBJPROP_YDISTANCE,50);
   ObjectSetString(0,labelID,OBJPROP_FONT,"Trebuchet MS");
   ObjectSetString(0,labelID,OBJPROP_TEXT,"No information");
   ObjectSetInteger(0,labelID,OBJPROP_FONTSIZE,20);
   ObjectSetInteger(0,labelID,OBJPROP_SELECTABLE,0);
 
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   ObjectDelete(0,buttonID);
   ObjectDelete(0,labelID);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
 
  }
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- Fareyi tıklayarak olayı kontrol et
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      string clickedChartObject=sparam;
      //--- buttonID isimli nesneye tıkladıysan
      if(clickedChartObject==buttonID)
        {
         //--- Düğme durumu - basılı veya serbest
         bool selected=ObjectGetInteger(0,buttonID,OBJPROP_STATE);
         //--- bir hata düzeltme mesajını günlüğe yaz
         Print("Düğmeye basıldı = ",selected);
         int customEventID; // Gönderilecek özel olayların sayısı
         string message;    // Olay ile gönderilecek mesaj
         //--- Eğer düğmeye basılmışsa
         if(selected)
           {
            message="Düğmeye basıldı";
            customEventID=CHARTEVENT_CUSTOM+1;
           }
         else // Düğmeye basılmamışsa
           {
            message="Düğmeye basıldı";
            customEventID=CHARTEVENT_CUSTOM+999;
           }
         //--- "our" isimli bir özel olay gönder
         EventChartCustom(0,customEventID-CHARTEVENT_CUSTOM,0,0,message);
         ///--- tüm açık çizelgelere bir mesaj gönder
         BroadcastEvent(ChartID(),0,"Broadcast Message");
         //--- Hata ayıklama mesajı
         Print("Bir olay gönderildi, ID = ",customEventID);
        }
      ChartRedraw();// Tüm çizelge nesnelerinin yeniden çizilmeye zorlanması
     }
 
//--- Olayın özel bir olay olup olmadığını kontrol et
   if(id>CHARTEVENT_CUSTOM)
     {
      if(id==broadcastEventID)
        {
         Print("Bir çizelgeden yayınlanan bir mesaj alındı, id = "+lparam);
        }
      else
        {
         //--- Olaydaki metin mesajını okuruz
         string info=sparam;
         Print("Kullanıcı olayını işle, ID = ",id);
         //--- Bir etiket içerisinde mesajı görüntüle
         ObjectSetString(0,labelID,OBJPROP_TEXT,sparam);
         ChartRedraw();// Tüm çizelge nesnelerinin yeniden çizilmeye zorlanması
        }
     }
  }
//+------------------------------------------------------------------+
//| tüm açık çizelgelere yayın olayı gönderir                        |
//+------------------------------------------------------------------+
void BroadcastEvent(long lparam,double dparam,string sparam)
  {
   int eventID=broadcastEventID-CHARTEVENT_CUSTOM;
   long currChart=ChartFirst();
   int i=0;
   while(i<CHARTS_MAX)                 // Kesinlikle CHARTS_MAX değerinden daha fazla açık çizelgemiz yok
     {
      EventChartCustom(currChart,eventID,lparam,dparam,sparam);
      currChart=ChartNext(currChart); // Daha öncekilerden yeni bir çizelgemiz var
      if(currChart==-1) break;        // Çizelge listesinin sonuna gelindi
      i++;// Sayacı artırmayı unutma
     }
  }
//+------------------------------------------------------------------+

Ayrıca Bakınız

Müşteri terminali olayları, Olay işleyici fonksiyonlar