OBJ_RECTANGLE_LABEL

Objet Etiquette Rectangle.

ObjRectangleLabel

Note

Les coordonnées du point d'ancrage sont définies en pixels. Vous pouvez sélectionner le coin d'ancrage de l'étiquette rectangle dans l'énumération ENUM_BASE_CORNER. Le type de bordure de l'étiquette rectangle peut être sélectionnée dans l'énumération ENUM_BORDER_TYPE.

L'objet est utilisé pour créer et concevoir une interface graphique personnalisée.

Exemple

Le script suivant crée et déplace un objet Etiquette Rectangle 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 Rectangle\"."
//--- 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="RectLabel";         // Nom de l'étiquette
input color            InpBackColor=clrSkyBlue;     // Couleur de l'arrière-plan
input ENUM_BORDER_TYPE InpBorder=BORDER_FLAT;       // Type de bordure
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER// Coin du graphique pour l'ancrage
input color            InpColor=clrDarkBlue;        // Couleur de la bordure plate (Flat)
input ENUM_LINE_STYLE  InpStyle=STYLE_SOLID;        // style de bordure plat (Flat)
input int              InpLineWidth=3;              // largeur de la bordure plate (Flat)
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éer une étiquette rectangle                                                                      |
//+----------------------------------------------------------------------------------------------------+
bool RectLabelCreate(const long             chart_ID=0,               // identifiant du graphique
                     const string           name="RectLabel",         // 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 int              width=50,                 // largeur
                     const int              height=18,                // hauteur
                     const color            back_clr=C'236,233,216',  // couleur en arrière-plan
                     const ENUM_BORDER_TYPE border=BORDER_SUNKEN,     // type de bordure
                     const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER// coin du graphique pour l'ancrage
                     const color            clr=clrRed,               // Couleur de la bordure plate (Flat)
                     const ENUM_LINE_STYLE  style=STYLE_SOLID,        // style de la bordure plate
                     const int              line_width=1,             // largeur de la bordure plate
                     const bool             back=false,               // en arrière-plan
                     const bool             selection=false,          // mise en surbrillance pour déplacer
                     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 l'étiquette rectangle
   if(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0))
     {
      Print(__FUNCTION__,
            " : impossible de créer l'étiquette rectangle ! 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 la taille de l'étiquette
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- définit la couleur d'arrière-plan
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- définit le type de bordure
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border);
//--- 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 la couleur de la bordure plate (dans le mode Plat)
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- définit le style de ligne de la bordure plate
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- définit la largeur de la bordure plate
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width);
//--- 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 rectangle                                                                      |
//+----------------------------------------------------------------------------------------------------+
bool RectLabelMove(const long   chart_ID=0,       // identifiant du graphique
                   const string name="RectLabel"// 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 rectangle
   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);
  }
//+----------------------------------------------------------------------------------------------------+
//| Modifie la taille de l'étiquette rectangle                                                         |
//+----------------------------------------------------------------------------------------------------+
bool RectLabelChangeSize(const long   chart_ID=0,       // identifiant du graphique
                         const string name="RectLabel"// nom de l'étiquette
                         const int    width=50,         // largeur de l'étiquette
                         const int    height=18)        // hauteur de l'étiquette
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- modifie la taille de l'étiquette
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            " : impossible de modifier la largeur de l'étiquette ! Code d'erreur = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            " : impossible de modifier la hauteur de l'étiquette ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Change le type de bordure de l'étiquette rectangle                                                 |
//+----------------------------------------------------------------------------------------------------+
bool RectLabelChangeBorderType(const long             chart_ID=0,           // identifiant du graphique
                               const string           name="RectLabel",     // nom de l'étiquette
                               const ENUM_BORDER_TYPE border=BORDER_SUNKEN// type de bordure
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- modifie le type de bordure
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border))
     {
      Print(__FUNCTION__,
            " : impossible de modifier le type de bordure ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Supprime l'étiquette rectangle                                                                     |
//+----------------------------------------------------------------------------------------------------+
bool RectLabelDelete(const long   chart_ID=0,       // identifiant du graphique
                     const string name="RectLabel"// 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 rectangle ! 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 les coordonnées de l'étiquette rectangle
   int x=(int)x_distance/4;
   int y=(int)y_distance/4;
//--- définit la taille de l'étiquette
   int width=(int)x_distance/4;
   int height=(int)y_distance/4;
//--- crée l'étiquette rectangle
   if(!RectLabelCreate(0,InpName,0,x,y,width,height,InpBackColor,InpBorder,InpCorner,
      InpColor,InpStyle,InpLineWidth,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- redéssine le graphique et attend 1 seconde
   ChartRedraw();
   Sleep(1000);
//--- modifie la taille de l'étiquette rectangle
   int steps=(int)MathMin(x_distance/4,y_distance/4);
   for(int i=0;i<steps;i++)
     {
      //--- redimmensionnement
      width+=1;
      height+=1;
      if(!RectLabelChangeSize(0,InpName,width,height))
         return;
      //--- vérifie si l'exécution du script a été stoppée
      if(IsStopped())
         return;
      //--- redessine le graphique et attend 0.01 seconde
      ChartRedraw();
      Sleep(10);
     }
//--- délai de 1 seconde
   Sleep(1000);
//--- modifie le type de bordure
   if(!RectLabelChangeBorderType(0,InpName,BORDER_RAISED))
      return;
//--- redéssine le graphique et attend 1 seconde
   ChartRedraw();
   Sleep(1000);
//--- modifie le type de bordure
   if(!RectLabelChangeBorderType(0,InpName,BORDER_SUNKEN))
      return;
//--- redéssine le graphique et attend 1 seconde
   ChartRedraw();
   Sleep(1000);
//--- supprime l'étiquette
   RectLabelDelete(0,InpName);
   ChartRedraw();
//--- attente d'1 seconde
   Sleep(1000);
//---
  }