OBJ_RECTANGLE_LABEL

Objeto "Etiqueta rectangular".

ObjRectangleLabel

Nota

Las coordenadas del punto de anclaje se establecen en píxeles. Desde la enumeración ENUM_BASE_CORNER se puede elegir la esquina de enlace de la etiqueta rectangular. Desde la enumeración ENUM_BORDER_TYPE se puede elegir el tipo de los bordes de la etiqueta rectangular.

Este objeto se utiliza para crear y diseñar la interfaz gráfica personalizada.

Ejemplo

El siguiente script crea y desplaza la "Etiqueta rectangular" en el gráfico. Para la creación y modificación de las propiedades del objeto gráfico han sido escritas unas funciones especiales que Usted puede utilizar "como son" en sus propias aplicaciones.

 

//--- descripción
#property description "El script crea el objeto gráfico \"Etiqueta rectangular\"."
//--- mostramos la ventana de los parámetros de entrada durante el arranque del script
#property script_show_inputs
//--- los parámetros de entrada del script
input string           InpName="RectLabel";         // Nombre de la etiqueta
input color            InpBackColor=clrSkyBlue;     // Color del fondo
input ENUM_BORDER_TYPE InpBorder=BORDER_FLAT;       // Tipo del borde
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER// Esquina del gráfico para el enlace
input color            InpColor=clrDarkBlue;        // Color del contorno plano (Flat)
input ENUM_LINE_STYLE  InpStyle=STYLE_SOLID;        // Estilo del contorno plano (Flat)
input int              InpLineWidth=3;              // Grosor del contorno plano (Flat)
input bool             InpBack=false;               // Objeto al fondo
input bool             InpSelection=true;           // Seleccionar para mover
input bool             InpHidden=true;              // Ocultar en la lista de objetos
input long             InpZOrder=0;                 // Prioridad para el clic del ratón
//+------------------------------------------------------------------+
//| Crea la etiqueta rectangular                                      |
//+------------------------------------------------------------------+
bool RectLabelCreate(const long             chart_ID=0,               // ID del gráfico
                     const string           name="RectLabel",         // nombre de la etiqueta
                     const int              sub_window=0,             // número de subventana
                     const int              x=0,                      // coordenada por el eje X
                     const int              y=0,                      // coordenada por el eje Y
                     const int              width=50,                 // ancho
                     const int              height=18,                // alto
                     const color            back_clr=C'236,233,216',  // color del fondo
                     const ENUM_BORDER_TYPE border=BORDER_SUNKEN,     // tipo del borde
                     const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER// esquina del gráfico para el enlace
                     const color            clr=clrRed,               // color del contorno plano (Flat)
                     const ENUM_LINE_STYLE  style=STYLE_SOLID,        // estilo del contorno plano
                     const int              line_width=1,             // grosor del contorno plano
                     const bool             back=false,               // al fondo
                     const bool             selection=false,          // seleccionar para mover
                     const bool             hidden=true,              // ocultar en la lista de objetos
                     const long             z_order=0)                // prioridad para el clic del ratón
  {
//--- anulamos el valor del error
   ResetLastError();
//--- creamos la etiqueta rectangular
   if(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": ¡Fallo al crear la etiqueta rectangular! Código del error = ",GetLastError());
      return(false);
     }
//--- establecemos las coordenadas de la etiqueta
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- establecemos las dimensiones de la etiqueta
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- establecemos el color del fondo
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- establecemos el tipo del borde
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border);
//--- establecemos la esquina del gráfico respecto a la cual van a determinarse las coordenadas del punto
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- establecemos el color del contorno plano (en modo Flat)
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- establecemos el estilo de las líneas del contorno plano
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- establecemos el grosor del contorno plano
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width);
//--- mostramos en el primer plano (false) o al fondo (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- activar (true) o desactivar (false) el modo de desplazamiento de la etiqueta con ratón
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultamos (true) o mostramos (false) el nombre del objeto gráfico en la lista de objetos
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- establecemos la prioridad para obtener el evento de cliquear sobre el gráfico
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- ejecución con éxito
   return(true);
  }
//+------------------------------------------------------------------+
//| Mueve la etiqueta rectangular                                   |
//+------------------------------------------------------------------+
bool RectLabelMove(const long   chart_ID=0,       // ID del gráfico
                   const string name="RectLabel"// nombre de la etiqueta
                   const int    x=0,              // coordenada por el eje X
                   const int    y=0)              // coordenada por el eje Y
  {
//--- anulamos el valor del error
   ResetLastError();
//--- movemos la etiqueta rectangular
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": ¡Fallo al mover la coordenada X de la etiqueta! Código del error = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": ¡Fallo al mover la coordenada Y de la etiqueta! Código del error = ",GetLastError());
      return(false);
     }
//--- ejecución con éxito
   return(true);
  }
//+------------------------------------------------------------------+
//| Cambia el tamaño de la etiqueta rectangular                              |
//+------------------------------------------------------------------+
bool RectLabelChangeSize(const long   chart_ID=0,       // ID del gráfico
                         const string name="RectLabel"// nombre de la etiqueta
                         const int    width=50,         // ancho de la etiqueta
                         const int    height=18)        // alto de la etiqueta
  {
//--- anulamos el valor del error
   ResetLastError();
//--- cambiamos las dimensiones de la etiqueta
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": ¡Fallo al cambiar el ancho de la etiqueta! Código del error = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": ¡Fallo al cambiar el alto de la etiqueta! Código del error = ",GetLastError());
      return(false);
     }
//--- ejecución con éxito
   return(true);
  }
//+------------------------------------------------------------------+
//| Cambia el tipo del borde de la etiqueta rectangular                         |
//+------------------------------------------------------------------+
bool RectLabelChangeBorderType(const long             chart_ID=0,           // ID del gráfico
                               const string           name="RectLabel",     // nombre de la etiqueta
                               const ENUM_BORDER_TYPE border=BORDER_SUNKEN// tipo del borde
  {
//--- anulamos el valor del error
   ResetLastError();
//--- cambiamos el tipo del borde
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border))
     {
      Print(__FUNCTION__,
            ": ¡Fallo al cambiar el tipo del borde! Código del error = ",GetLastError());
      return(false);
     }
//--- ejecución con éxito
   return(true);
  }
//+------------------------------------------------------------------+
//| Elimina la etiqueta rectangular                                      |
//+------------------------------------------------------------------+
bool RectLabelDelete(const long   chart_ID=0,       // ID del gráfico
                     const string name="RectLabel"// nombre de la etiqueta
  {
//--- anulamos el valor del error
   ResetLastError();
//--- eliminamos la etiqueta
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": ¡Fallo al eliminar la etiqueta rectangular! Código del error = ",GetLastError());
      return(false);
     }
//--- ejecución con éxito
   return(true);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- tamaño de la ventana del gráfico
   long x_distance;
   long y_distance;
//--- definimos las dimensiones de la ventana
   if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
     {
      Print("¡Fallo al obtener el ancho del gráfico! Código del error = ",GetLastError());
      return;
     }
   if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
     {
      Print("¡Fallo al obtener el alto del gráfico! Código del error = ",GetLastError());
      return;
     }
//--- definimos las coordenadas de la etiqueta rectangular
   int x=(int)x_distance/4;
   int y=(int)y_distance/4;
//--- establecemos las dimensiones de la etiqueta
   int width=(int)x_distance/4;
   int height=(int)y_distance/4;
//--- creamos la etiqueta rectangular
   if(!RectLabelCreate(0,InpName,0,x,y,width,height,InpBackColor,InpBorder,InpCorner,
      InpColor,InpStyle,InpLineWidth,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- redibujamos el gráfico y esperamos 1 segundo
   ChartRedraw();
   Sleep(1000);
//--- cambiamos el tamaño de la etiqueta rectangular
   int steps=(int)MathMin(x_distance/4,y_distance/4);
   for(int i=0;i<steps;i++)
     {
      //--- cambiamos el tamaño
      width+=1;
      height+=1;
      if(!RectLabelChangeSize(0,InpName,width,height))
         return;
      //--- comprobamos si el trabajo del script ha sido finalizado forzosamente
      if(IsStopped())
         return;
      //--- redibujamos el gráfico y esperamos 0,01 segundo
      ChartRedraw();
      Sleep(10);
     }
//--- retardo de 1 segundo
   Sleep(1000);
//--- cambiamos el tipo del borde
   if(!RectLabelChangeBorderType(0,InpName,BORDER_RAISED))
      return;
//--- redibujamos el gráfico y esperamos 1 segundo
   ChartRedraw();
   Sleep(1000);
//--- cambiamos el tipo del borde
   if(!RectLabelChangeBorderType(0,InpName,BORDER_SUNKEN))
      return;
//--- redibujamos el gráfico y esperamos 1 segundo
   ChartRedraw();
   Sleep(1000);
//--- eliminamos la etiqueta
   RectLabelDelete(0,InpName);
   ChartRedraw();
//--- esperamos 1 segundo
   Sleep(1000);
//---
  }