OBJ_EDIT

Objet Zone d'Edition.

ObjEdit

Note

Les coordonnées du point d'ancrage sont définies en pixels. Vous pouvez sélectionner le coin d'ancrage de la Zone d'Edition avec l'énumération ENUM_BASE_CORNER.

Vous pouvez aussi sélectionner l'un des types d'alignement du texte dans la Zone d'Edition avec l'énumération ENUM_ALIGN_MODE.

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 crée un objet \"Zone d'Edition\" object."
//--- 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="Edit";              // nom de l'objet
input string           InpText="Text";              // Texte de l'objet
input string           InpFont="Arial";             // Police de caractères
input int              InpFontSize=14;              // Taille de la police de caractères
input ENUM_ALIGN_MODE  InpAlign=ALIGN_CENTER;       // Type d'alignement du texte
input bool             InpReadOnly=false;           // Autorisation d'édition
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER// Coin du graphique pour l'ancrage
input color            InpColor=clrBlack;           // Couleur du texte
input color            InpBackColor=clrWhite;       // Couleur d'arrière plan
input color            InpBorderColor=clrBlack;     // Couleur de la bordure
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 l'objet Zone d'Edition                                                                        |
//+----------------------------------------------------------------------------------------------------+
bool EditCreate(const long             chart_ID=0,               // identifiant du graphique
                const string           name="Edit",              // nom de l'objet
                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 string           text="Text",              // texte
                const string           font="Arial",             // police de caractères
                const int              font_size=10,             // taille de la police de caractères
                const ENUM_ALIGN_MODE  align=ALIGN_CENTER,       // type d'alignement
                const bool             read_only=false,          // autoristation d'édition
                const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER// coin du graphique pour l'ancrage
                const color            clr=clrBlack,             // couleur du texte
                const color            back_clr=clrWhite,        // Couleur d'arrière plan
                const color            border_clr=clrNONE,       // Couleur de la bordure
                const bool             back=false,               // en arrière plan
                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é pour le clic de souris
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- crée le champ d'édition
   if(!ObjectCreate(chart_ID,name,OBJ_EDIT,sub_window,0,0))
     {
      Print(__FUNCTION__,
            " : échec de création de l'objet \"Zone d'Edition\" object! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- définit les coordonnées de l'objet
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- définit la taille de l'objet
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- 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 le type d'alignement du texte dans l'objet
   ObjectSetInteger(chart_ID,name,OBJPROP_ALIGN,align);
//--- active (true) ou annule (false) le mode lecture-seule
   ObjectSetInteger(chart_ID,name,OBJPROP_READONLY,read_only);
//--- définit le coin du graphique à partir duquel les coordonnées de l'objet sont définies relativement
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- 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);
//--- 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'objet Zone d'Edition                                                                     |
//+----------------------------------------------------------------------------------------------------+
bool EditMove(const long   chart_ID=0,  // identifiant du graphique
              const string name="Edit"// nom de l'objet
              const int    x=0,         // Coordonnée X
              const int    y=0)         // Coordonnée Y
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- déplace l'objet
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            " : impossible de déplacer la coordonnée X de l'objet ! 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'objet ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Redimmensionne l'objet Zone d'Edition                                                              |
//+----------------------------------------------------------------------------------------------------+
bool EditChangeSize(const long   chart_ID=0,  // identifiant du graphique
                    const string name="Edit"// nom de l'objet
                    const int    width=0,     // largeur
                    const int    height=0)    // hauteur
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- modifie la taille de l'objet
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            " : impossible de modifier la largeur de l'objet ! Code d'erreur = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            " : impossible de modifier la heuteur de l'objet ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Change le texte de l'objet Zone d'Edition                                                          |
//+----------------------------------------------------------------------------------------------------+
bool EditTextChange(const long   chart_ID=0,  // identifiant du graphique
                    const string name="Edit"// 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);
  }
//+----------------------------------------------------------------------------------------------------+
//| Retourne le texte de l'objet Zone d'Edition                                                        |
//+----------------------------------------------------------------------------------------------------+
bool EditTextGet(string      &text,        // texte
                 const long   chart_ID=0,  // identifiant du graphique
                 const string name="Edit"// nom de l'objet
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- récupère le texte de l'objet
   if(!ObjectGetString(chart_ID,name,OBJPROP_TEXT,0,text))
     {
      Print(__FUNCTION__,
            " : échec de récupération du texte ! Code d'erreur = ",GetLastError());
      return(false);
     }
//--- exécution réussie
   return(true);
  }
//+----------------------------------------------------------------------------------------------------+
//| Supprime l'objet Zone d'Edition                                                                    |
//+----------------------------------------------------------------------------------------------------+
bool EditDelete(const long   chart_ID=0,  // identifiant du graphique
                const string name="Edit"// nom de l'objet
  {
//--- réinitialise la valeur d'erreur
   ResetLastError();
//--- supprime l'étiquette
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            " : échec de la suppression de l'objet \"Zone d'Edition\" ! 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 du champ d'édition
   int x_step=(int)x_distance/64;
//--- définit les coordonnées et la taille du champ d'édition
   int x=(int)x_distance/8;
   int y=(int)y_distance/2;
   int x_size=(int)x_distance/8;
   int y_size=InpFontSize*2;
//--- stocke le texte dans la variable locale
   string text=InpText;
//--- crée le champ d'édition
   if(!EditCreate(0,InpName,0,x,y,x_size,y_size,InpText,InpFont,InpFontSize,InpAlign,InpReadOnly,
      InpCorner,InpColor,InpBackColor,InpBorderColor,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- redéssine le graphique et attend 1 seconde
   ChartRedraw();
   Sleep(1000);
//--- étend le champ d'édition
   while(x_size-x<x_distance*5/8)
     {
      //--- augmente la largeur du champ d'édition
      x_size+=x_step;
      if(!EditChangeSize(0,InpName,x_size,y_size))
         return;
      //--- vérifie si l'exécution du script a été stoppée
      if(IsStopped())
         return;
      //--- redessine le graphique et attend 0.05 seconde
      ChartRedraw();
      Sleep(50);
     }
//--- délai d'une demie seconde
   Sleep(500);
//--- change le texte
   for(int i=0;i<20;i++)
     {
      //--- ajoute "+" au début et à la fin
      text="+"+text+"+";
      if(!EditTextChange(0,InpName,text))
         return;
      //--- vérifie si l'exécution du script a été stoppée
      if(IsStopped())
         return;
      //--- redessine le graphique et attend 0.1 seconde
      ChartRedraw();
      Sleep(100);
     }
//--- délai d'une demie seconde
   Sleep(500);
//--- supprime le champ d'édition
   EditDelete(0,InpName);
   ChartRedraw();
//--- attente d'1 seconde
   Sleep(1000);
//---
  }