OBJ_BUTTON

Objet bouton.

ObjButton

Note

Les coordonnées du point d'ancrage sont définies en pixels. Vous pouvez sélectionner le coin d'ancrage du bouton dans ENUM_BASE_CORNER.

Exemple

Le script suivant crée et déplace l'objet Bouton sur le graphique. Des fonctions spéciales ont été développées pour créer et modifier les propriétés de l'objet graphique. Vous pouvez utiliser ces fonctions "telles quelles" dans vos propres applications.

//--- description
#property description "Le script crée un bouton sur le graphique."
//--- affichage de la fenêtre des paramètres d'entrée lors du lancement du script
#property script_show_inputs
//--- paramètres d'entrée du script
input string           InpName="Button";            // Nom du bouton
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER// Coin du graphique pour l'ancrage
input string           InpFont="Arial";             // Police de caractères
input int              InpFontSize=14;              // Taille de la police de caractères
input color            InpColor=clrBlack;           // Couleur du texte
input color            InpBackColor=C'236,233,216'// Couleur de l'arrière-plan
input color            InpBorderColor=clrNONE;      // couleur de la bordure
input bool             InpState=false;              // Appuyé/Relâché
input bool             InpBack=false;               // Objet en arrière-plan
input bool             InpSelection=false;          // Mise en surbrillance pour déplacer
input bool             InpHidden=true;              // Caché dans la liste des objets
input long             InpZOrder=0;                 // Priorité du clic de souris
//+----------------------------------------------------------------------------------------------------+
//| Crée le bouton                                                                                     |
//+----------------------------------------------------------------------------------------------------+
bool ButtonCreate(const long              chart_ID=0,               // identifiant du graphique
                  const string            name="Button",            // nom du bouton
                  const int               sub_window=0,             // indice de sous-fenêtre
                  const int               x=0,                      // coordonnée X
                  const int               y=0,                      // coordonnée Y
                  const int               width=50,                 // largeur du bouton
                  const int               height=18,                // hauteur du bouton
                  const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER// coin du graphique pour l'ancrage
                  const string            text="Button",            // texte
                  const string            font="Arial",             // police de caractères
                  const int               font_size=10,             // taille de la police de caractères
                  const color             clr=clrBlack,             // couleur du texte
                  const color             back_clr=C'236,233,216',  // couleur en arrière-plan
                  const color             border_clr=clrNONE,       // couleur de la bordure
                  const bool              state=false,              // Appuyé/Relâché
                  const bool              back=false,               // en arrière-plan
mise en surbrillance pour le déplacement                  const bool              selection=false,          // mise en surbrillance pour le déplacement
                  const bool              hidden=true,              // caché dans la liste des objets
                  const long              z_order=0)                // priorité du clic de souris
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- crée le bouton
   if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": imposible de créer le bouton ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- définit les coordonnées du bouton
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- définit la taille du bouton
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- définit le coin du graphique, relativement auquel les coordonnées du point sont définies
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- définit le texte
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- définit la police de caractères du texte
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- définit la taille de la police de caractères
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- définit la couleur du texte
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- définit la couleur d'arrière-plan
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- définit la couleur de la bordure
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
//--- affiche en premier plan (false) ou en arrière-plan (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- définit l'état du bouton
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- active (true) ou désactive (false) le mode de déplacement du bouton à la souris
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- masque (true) ou affiche (false) le nom de l'objet graphique dans la liste des objets
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- définit la priorité pour recevoir l'événement d'un clic de souris dans le graphique
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Déplace le bouton                                                                                  |
//+----------------------------------------------------------------------------------------------------+
bool ButtonMove(const long   chart_ID=0,    // identifiant du graphique
                const string name="Button"// nom du bouton
                const int    x=0,           // coordonnée X
                const int    y=0)           // coordonnée Y
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- déplace le bouton
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            " : impossible de déplacer la coordonnée X du bouton ! Code d'erreur = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            " : impossible de déplacer la coordonnées Y du bouton ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Modifie la taille du bouton                                                                        |
//+----------------------------------------------------------------------------------------------------+
bool ButtonChangeSize(const long   chart_ID=0,    // identifiant du graphique
                      const string name="Button"// nom du bouton
                      const int    width=50,      // largeur du bouton
                      const int    height=18)     // hauteur du bouton
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- modifie la taille du bouton
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            " : impossible de modifier la largeur du bouton ! Code d'erreur = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            " : impossible de modifier la hauteur du bouton ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Change le coin du graphique pour lier le bouton                                                    |
//+----------------------------------------------------------------------------------------------------+
bool ButtonChangeCorner(const long             chart_ID=0,               // identifiant du graphique
                        const string           name="Button",            // nom du bouton
                        const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER// coin du graphique pour l'ancrage
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- modifie le coin d'ancrage
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner))
     {
      Print(__FUNCTION__,
            ": impossible de modifier le coin d'ancrage ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Change le texte du bouton                                                                          |
//+----------------------------------------------------------------------------------------------------+
bool ButtonTextChange(const long   chart_ID=0,    // identifiant du graphique
                      const string name="Button"// nom du bouton
                      const string text="Text")   // texte
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- modifie le texte de l'objet
   if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,text))
     {
      Print(__FUNCTION__,
            " : impossible de modifier le texte ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Supprime le bouton                                                                                 |
//+----------------------------------------------------------------------------------------------------+
bool ButtonDelete(const long   chart_ID=0,    // identifiant du graphique
                  const string name="Button"// nom du bouton
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- supprime le bouton
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            " : impossible de supprimer le bouton ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Fonction de démarrage du script                                                                    |
//+----------------------------------------------------------------------------------------------------+
void OnStart()
  {
//--- taille de la fenêtre du graphique
   long x_distance;
   long y_distance;
//--- définit la taille de la fenêtre
   if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
     {
      Print("Impossible d'obtenir la largeur du graphique ! Code d'erreur = ",GetLastError());
      return;
     }
   if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
     {
      Print("Impossible d'obtenir la hauteur du graphique ! Code d'erreur = ",GetLastError());
      return;
     }
//--- définit le pas de changement de la taille du bouton
   int x_step=(int)x_distance/32;
   int y_step=(int)y_distance/32;
//--- définit les coordonnées du bouton et sa taille
   int x=(int)x_distance/32;
   int y=(int)y_distance/32;
   int x_size=(int)x_distance*15/16;
   int y_size=(int)y_distance*15/16;
//--- crée le bouton
   if(!ButtonCreate(0,InpName,0,x,y,x_size,y_size,InpCorner,"Press",InpFont,InpFontSize,
      InpColor,InpBackColor,InpBorderColor,InpState,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- redessine le graphique
   ChartRedraw();
//--- réduit le bouton dans la boucle
   int i=0;
   while(i<13)
     {
      //--- délai d'une demie seconde
      Sleep(500);
      //--- bascule le bouton à l'état appuyé
      ObjectSetInteger(0,InpName,OBJPROP_STATE,true);
      //--- redessine le graphique et attends 0,2 seconde
      ChartRedraw();
      Sleep(200);
      //--- redéfinit les coordonnées et la taille du bouton
      x+=x_step;
      y+=y_step;
      x_size-=x_step*2;
      y_size-=y_step*2;
      //--- réduit le bouton
      ButtonMove(0,InpName,x,y);
      ButtonChangeSize(0,InpName,x_size,y_size);
      //--- remet le bouton à l'état relâché
      ObjectSetInteger(0,InpName,OBJPROP_STATE,false);
      //--- redessine le graphique
      ChartRedraw();
      //--- vérifie si l'exécution du script a été stoppée
      if(IsStopped())
         return;
      //--- incrémente le compteur de boucle
      i++;
     }
//--- délai d'une demie seconde
   Sleep(500);
//--- supprime le bouton
   ButtonDelete(0,InpName);
   ChartRedraw();
//--- attente d'1 seconde
   Sleep(1000);
//---
  }