EventChartCustom

Génère l'événement d'utilisateur pour le graphique indiqué.

bool  EventChartCustom(
   long    chart_id,            // identificateur du graphique-destinataire de l'événement
   ushort  custom_event_id,     // identificateur de l'événement
   long    lparam,              // paramètre du type long
   double  dparam,              // paramètre du type double
   string  sparam               // paramètre de chaîne de l'événement
   );

Paramètres

chart_id

[in]  L'identificateur du graphique. 0 signifie le graphique courant.

custom_event_id

[in]  L'identificateur de l'événement d'utilisateur. Cet identificateur est ajouté automatiquement à la valeur CHARTEVENT_CUSTOM et est transcrit  au type entier.

lparam

[in]  Le paramètre de l'événement du type long, transmis à la fonction OnChartEvent.

dparam

[in]   Le paramètre de l'événement du type double, transmis à la fonction OnChartEvent.

sparam

[in]   Le paramètre de l'événement du type string, transmis à la fonction OnChartEvent. Si la chaîne a la longueur plus que 63 symboles, la chaîne est tronquée

La valeur rendue

Rend true en cas de la position réussie de l'événement d'utilisateur au tour des événements du graphique — du destinataire de l'événement. En cas de l'erreur rend false, pour recevoir un code de l'erreur utilisez GetLastError().

Note

L'expert ou l'indicateur fixé au graphique indiqué, traite l'événement donné à l'aide de la fonction OnChartEvent(int event_id, long& lparam, double& dparam, string& sparam).

Pour chaque type de l'événement les paramètres d'entrée de la fonction OnChartEvent() ont les valeurs définies, qui sont nécessaires au traitement de cet événement. Dans le tableau sont énumérés les événements et les valeurs, qui sont transmises par les paramètres.

L'événement

La valeur du paramètre id

La valeur du paramètre lparam

La valeur du paramètre dparam

La valeur du paramètre sparam

L'événement de la pression du clavier

CHARTEVENT_KEYDOWN

le code de la touche appuyée

Le nombre de pressions du bouton générées au cours de sa rétention dans l'état appuyé

La valeur de ligne d'un masque de bit, décrivant le statut des boutons du clavier

Les événements de la souris(si la propriété est définie pour le graphique CHART_EVENT_MOUSE_MOVE=true)

CHARTEVENT_MOUSE_MOVE

La coordonnée X

La coordonnée Y

La valeur de chaîne d'un masque de bits décrivant l'état de boutons de souris

L'événement de la création de l'objet graphique (si la propriété est définie pour le graphique CHART_EVENT_OBJECT_CREATE=true)

CHARTEVENT_OBJECT_CREATE

Le nom de l'objet créé graphique

L'événement du changement des propriétés de l'objet par le dialogue des propriétés

CHARTEVENT_OBJECT_CHANGE

Le nom de l'objet créé graphique

L'événement de la suppression de l'objet graphique (si la propriété est définie pour le graphique CHART_EVENT_OBJECT_DELETE=true)

CHARTEVENT_OBJECT_DELETE

Le nom de l'objet graphique supprimé

L'événement du clic de la souris sur le graphique

CHARTEVENT_CLICK

La coordonnée X

La coordonnée Y

L'événement du clic de la souris sur l'objet graphique

CHARTEVENT_OBJECT_CLICK

La coordonnée X

La coordonnée Y

Le nom d'un objet graphique sur lequel l'événement s'est produit

L'événement du déplacement de l'objet graphique à l'aide de la souris

CHARTEVENT_OBJECT_DRAG

Le nom de l'objet graphique déplacé

L'événement de la fin de l'édition du texte dans l'objet graphique "Le champ de l'entrée"

CHARTEVENT_OBJECT_ENDEDIT

Le nom de l'objet graphique "Le champ de l'entrée", où l'édition du texte s'est achevée

L'événement du changement du graphique

CHARTEVENT_CHART_CHANGE

L'événement d'utilisateur avec le numéro N

CHARTEVENT_CUSTOM+N

La valeur, spécifiée par la fonction EventChartCustom()

La valeur, spécifiée par la fonction EventChartCustom()

La valeur, spécifiée par la fonction EventChartCustom()

Exemple:

//+------------------------------------------------------------------+
//|                                            ButtonClickExpert.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              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()
  {
//--- créons le bouton, pour la transmission des événements d'utilisateur
   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,"Bouton");
   ObjectSetInteger(0,buttonID,OBJPROP_FONTSIZE,10);
   ObjectSetInteger(0,buttonID,OBJPROP_SELECTABLE,0);
 
//--- créons la marque pour afficher l'information
   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,"Pas d'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)
  {
//--- contrôlerons l'événement sur la pression du bouton de la souris
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      string clickedChartObject=sparam;
      //--- si la pression sur l'objet avec le nom buttonID
      if(clickedChartObject==buttonID)
        {
         //--- Etat du bouton - on a appuyé le bouton ou non
         bool selected=ObjectGetInteger(0,buttonID,OBJPROP_STATE);
         //--- notez un message de réglage
         Print("Bouton est appuyé = ",selected);
         int customEventID; // numéro de l'événement d'utilisateur pour l'expédition
         string message;    // message pour l'expédition dans l'événement
         //--- si le bouton est appuyé
         if(selected)
           {
            message="bouton est appuyé";
            customEventID=CHARTEVENT_CUSTOM+1;
           }
         else // bouton n'est pas appuyé
           {
            message="Bouton est appuyé";
            customEventID=CHARTEVENT_CUSTOM+999;
           }
         //--- envoyons l'événement d'utilisateur au graphique
         EventChartCustom(0,customEventID-CHARTEVENT_CUSTOM,0,0,message);
         //--- envoyons le message aux tous les graphiques ouverts
         BroadcastEvent(ChartID(),0,"Broadcast Message");
         //--- message de réglage
         Print("On a expédié l'événement avec ID = ",customEventID);
        }
      ChartRedraw();// copions forcément tous les objets sur le graphique
     }
 
//--- vérifions l'événement sur l'appartenance aux événements d'utilisateur
   if(id>CHARTEVENT_CUSTOM)
     {
      if(id==broadcastEventID)
        {
         Print("Ont reçu le message de diffusion du graphique avec id = "+lparam);
        }
      else
        {
         //--- lirons le message de texte dans l'événement
         string info=sparam;
         Print("On traite l'événement D'UTILISATEUR avec  ID = ",id);
         //--- déduisons le message dans la marque
         ObjectSetString(0,labelID,OBJPROP_TEXT,sparam);
         ChartRedraw();// copions forcément tous les objets sur le graphique
        }
     }
  }
//+------------------------------------------------------------------+
//| envoyer le message de diffusion aux graphiques ouverts           |
//+------------------------------------------------------------------+
void BroadcastEvent(long lparam,double dparam,string sparam)
  {
   int eventID=broadcastEventID-CHARTEVENT_CUSTOM;
   long currChart=ChartFirst();
   int i=0;
   while(i<CHARTS_MAX)                // nous avons sans faute plus de CHARTS_MAX des graphiques ouverts
     {
      EventChartCustom(currChart,eventID,lparam,dparam,sparam);
      currChart=ChartNext(currChart); // sur la base du précédent nous recevrons un nouveau graphique
      if(currChart==-1) break;        // ont atteint la fin de la liste des graphiques
      i++;                            // n'oublierons pas d'augmenter le compteur
     }
  }
//+------------------------------------------------------------------+

Voir aussi

Les événements du terminal de client, la Fonction du traitement des événements