OBJ_LABEL

Objet Etiquette.

ObjTextLabel

Note

La position du point d'ancrage par rapport à l'étiquette peut être sélectionnée dans l'énumération ENUM_ANCHOR_POINT. Les coordonnées du point d'ancrage sont définies en pixels.

Vous pouvez également sélectionner le coin d'ancrage de l'étiquette parmi l'ENUM_BASE_CORNER énumération.

Exemple

Le script suivant crée et déplace l'objet Zone d'Edition 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 dessine un objet graphique \"Etiquette\"."
//--- 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="Label";         // Nom de l'étiquette
input int               InpX=150;                // distance de l'axe X
input int               InpY=150;                // distance de l'axe Y
input string            InpFont="Arial";         // Police de caractères
input int               InpFontSize=14;          // Taille de la police de caractères
input color             InpColor=clrRed;         // Couleur
input double            InpAngle=0.0;            // Angle de la pente en degrés
input ENUM_ANCHOR_POINT InpAnchor=ANCHOR_CENTER// type d'ancrage
input bool              InpBack=false;           // Objet en arrière-plan
input bool              InpSelection=true;       // 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 une étiquette                                                                                 |
//+----------------------------------------------------------------------------------------------------+
bool LabelCreate(const long              chart_ID=0,               // identifiant du graphique
                 const string            name="Label",             // nom de l'étiquette
                 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 ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER// coin d'ancrage du graphique
                 const string            text="Label",             // texte
                 const string            font="Arial",             // police de caractères
                 const int               font_size=10,             // taille de la police de caractères
                 const color             clr=clrRed,               // couleur
                 const double            angle=0.0,                // pente du texte
                 const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER// type d'ancrage
                 const bool              back=false,               // en arrière-plan
                 const bool              selection=false,          // mise en surbrillance pour déplacerhighlight to move
                 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 une étiquette
   if(!ObjectCreate(chart_ID,name,OBJ_LABEL,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": impossible de créer l'étiquette ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- définit les coordonnées de l'étiquette
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- 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 l'angle de pente du texte
   ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle);
//--- définit le type d'ancrage
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- définit la couleur
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- affiche en premier plan (false) ou en arrière-plan (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- active (true) ou désactive (false) le mode de déplacement de l'étiquette par 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 l'étiquette                                                                                |
//+----------------------------------------------------------------------------------------------------+
bool LabelMove(const long   chart_ID=0,   // identifiant du graphique
               const string name="Label"// nom de l'étiquette
               const int    x=0,          // coordonnée X
               const int    y=0)          // Coordonnée Y
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- déplace l'étiquette
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            " : impossible de déplacer la coordonnée X de l'étiquette ! Code d'erreur = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            " : impossible de déplacer la coordonnée Y de l'étiquette ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Change le coin du graphique pour lier l'étiquette                                                  |
//+----------------------------------------------------------------------------------------------------+
bool LabelChangeCorner(const long             chart_ID=0,               // identifiant du graphique
                       const string           name="Label",             // nom de l'étiquette
                       const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER// coin d'ancrage du graphique
  {
//--- 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);
  }
//+----------------------------------------------------------------------------------------------------+
//| Modifie le texte de l'étiquette texte                                                              |
//+----------------------------------------------------------------------------------------------------+
bool LabelTextChange(const long   chart_ID=0,   // identifiant du graphique
                     const string name="Label"// nom de l'objet
                     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 l'étiquette                                                                               |
//+----------------------------------------------------------------------------------------------------+
bool LabelDelete(const long   chart_ID=0,   // identifiant du graphique
                 const string name="Label"// nom de l'étiquette
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- supprime l'étiquette
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": impossible de supprimer l'étiquette ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Fonction de démarrage du script                                                                    |
//+----------------------------------------------------------------------------------------------------+
void OnStart()
  {
//--- stocke les coordonnées de l'étiquette dans les variables locales
   int x=InpX;
   int y=InpY;
//--- 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;
     }
//--- vérifie l'exactitude des paramètres d'entrée
   if(InpX<0 || InpX>x_distance-1 || InpY<0 || InpY>y_distance-1)
     {
      Print("Erreur ! Valeurs incorrectes des paramètres d'entrée !");
      return;
     }
//--- prépare le texte initial de l'étiquette
   string text;
   StringConcatenate(text,"Coin supérieur gauche : ",x,",",y);
//--- crée l'étiquette texte sur le graphique
   if(!LabelCreate(0,InpName,0,InpX,InpY,CORNER_LEFT_UPPER,text,InpFont,InpFontSize,
      InpColor,InpAngle,InpAnchor,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- redessine le graphique et attend 1 demie seconde
   ChartRedraw();
   Sleep(500);
//--- déplace l'étiquette et change son texte simultanément
//--- nombre d'itérations par axes
   int h_steps=(int)(x_distance/2-InpX);
   int v_steps=(int)(y_distance/2-InpY);
//--- déplace l'étiquette vers le bas
   for(int i=0;i<v_steps;i++)
     {
      //--- modifie la coordonnée
      y+=2;
      //--- déplace l'étiquette et modifie son texte
      MoveAndTextChange(x,y,"Coin supérieur gauche : ");
     }
//--- délai d'une demie seconde
   Sleep(500);
//--- déplace l'étiquette à droite
   for(int i=0;i<h_steps;i++)
     {
      //--- modifie la coordonnée
      x+=2;
      //--- déplace l'étiquette et modifie son texte
      MoveAndTextChange(x,y,"Coin supérieur gauche : ");
     }
//--- délai d'une demie seconde
   Sleep(500);
//--- déplace l'étiquette vers le haut
   for(int i=0;i<v_steps;i++)
     {
      //--- modifie la coordonnée
      y-=2;
      //--- déplace l'étiquette et modifie son texte
      MoveAndTextChange(x,y,"Coin supérieur gauche : ");
     }
//--- délai d'une demie seconde
   Sleep(500);
//--- déplace l'étiquette vers la gauche
   for(int i=0;i<h_steps;i++)
     {
      //--- modifie la coordonnée
      x-=2;
      //--- déplace l'étiquette et modifie son texte
      MoveAndTextChange(x,y,"Coin supérieur gauche : ");
     }
//--- délai d'une demie seconde
   Sleep(500);
//--- déplace maintenant le point en changeant le coin d'ancrage
//--- le déplace vers le coin inférieur gauche
   if(!LabelChangeCorner(0,InpName,CORNER_LEFT_LOWER))
      return;
//--- modifie l'étiquette texte
   StringConcatenate(text,"Coin inférieur gauche : ",x,",",y);
   if(!LabelTextChange(0,InpName,text))
      return;
//--- redessine le graphique et attend 2 secondes
   ChartRedraw();
   Sleep(2000);
//--- déplace vers le coin inférieur gauche
   if(!LabelChangeCorner(0,InpName,CORNER_RIGHT_LOWER))
      return;
//--- modifie l'étiquette texte
   StringConcatenate(text,"Coin inférieur gauche : ",x,",",y);
   if(!LabelTextChange(0,InpName,text))
      return;
//--- redessine le graphique et attend 2 secondes
   ChartRedraw();
   Sleep(2000);
//--- déplace vers le coin supérieur droit
   if(!LabelChangeCorner(0,InpName,CORNER_RIGHT_UPPER))
      return;
//--- modifie l'étiquette texte
   StringConcatenate(text,"Coin supérieur droit : ",x,",",y);
   if(!LabelTextChange(0,InpName,text))
      return;
//--- redessine le graphique et attend 2 secondes
   ChartRedraw();
   Sleep(2000);
//--- déplace vers le coin supérieur gauche
   if(!LabelChangeCorner(0,InpName,CORNER_LEFT_UPPER))
      return;
//--- modifie l'étiquette texte
   StringConcatenate(text,"Coin supérieur gauche : ",x,",",y);
   if(!LabelTextChange(0,InpName,text))
      return;
//--- redessine le graphique et attend 2 secondes
   ChartRedraw();
   Sleep(2000);
//--- supprime l'étiquette
   LabelDelete(0,InpName);
//--- redessine le graphique et attend 1 demie seconde
   ChartRedraw();
   Sleep(500);
//---
  }
//+----------------------------------------------------------------------------------------------------+
//| La fonction déplace l'objet et modifie son texte               |
//+----------------------------------------------------------------------------------------------------+
bool MoveAndTextChange(const int x,const int y,string text)
  {
//--- déplace l'étiquette
   if(!LabelMove(0,InpName,x,y))
      return(false);
//--- modifie l'étiquette texte
   StringConcatenate(text,text,x,",",y);
   if(!LabelTextChange(0,InpName,text))
      return(false);
//--- vérifie si l'exécution du script a été stoppée
   if(IsStopped())
      return(false);
//--- redessine le graphique
   ChartRedraw();
// délai de 0.01 seconde
   Sleep(10);
//--- sort de la fonction
   return(true);
  }