OBJ_RECTANGLE_LABEL

Rectangle Label object.

ObjRectangleLabel

Nota

Le coordinate del punto di ancoraggio sono impostate in pixels. Puoi selezionare l'angolo di ancoraggio dell'etichetta rettangolo dall'enumerazione ENUM_BASE_CORNER. Il tipo di bordo dell'etichetta rettangolo può essere selezionato dall'enumerazione ENUM_BORDER_TYPE.

L'oggetto viene utilizzato per creare e progettare l'interfaccia grafica personalizzata.

Esempio

Il seguente script crea e sposta l'etichetta Rettangolo sul grafico. Funzioni speciali sono state sviluppate per creare e modificare le proprietà dell'oggetto grafico. È possibile utilizzare queste funzioni "come è" nelle proprie applicazioni.

 

//--- descrizione
#property description "Lo script crea l'oggetto grafico \"Etichetta Rettangolo \"."
//--- mostra la finestra dei parametri di input durante il lancio dello script
#property script_show_inputs
//--- parametri di input dello script
input string            InpName="Label";         // Nome Etichetta
input color            InpBackColor=clrSkyBlue;       // Colore di sottofondo
input ENUM_BORDER_TYPE InpBorder=BORDER_FLAT;       // Tipo di bordo
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER// Angolo del chart per l'ancoraggio
input color            InpColor=clrDarkBlue;        // Colore del bordo piatto (Flat)
input ENUM_LINE_STYLE  InpStyle=STYLE_SOLID;        // Stile del bordo piatto (Flat)
input int              InpLineWidth=3;              // Spessore del bordo piatto (Flat)
input bool             InpBack=false;               // Oggetto sottofondo
input bool             InpSelection=true;           // Evidanzia movimento
input bool             InpHidden=true;              // Nascosto nella lista oggetti
input long             InpZOrder=0;                 // Priorità per il click del mouse
//+--------------------------------------------------------------------------------+
//| Create rectangle label                                           |
//+--------------------------------------------------------------------------------+
bool RectLabelCreate(const long             chart_ID=0,               // ID del chart
                     const string           name="RectLabel",         // nome dell'etichetta
                     const int              sub_window=0,             // indice sottofinestra
                     const int              x=0,                      // coordinate X
                     const int              y=0,                      // coordinate Y
                     const int              width=50,                 // spessore
                     const int              height=18,                // altezza
                     const color            back_clr=C'236,233,216',  // colore di background
                     const ENUM_BORDER_TYPE border=BORDER_SUNKEN,     // tipo di bordo
                     const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER// angolo del chart per l'ancoraggio
                     const color            clr=clrRed,               // colore del bordo flat (Flat)
                     const ENUM_LINE_STYLE  style=STYLE_SOLID,        // stile del bordo flat
                     const int              line_width=1,             // spessore del bordo flat
                     const bool             back=false,               // in sottofondo
                     const bool             selection=false,          // evidenzia movimento
                     const bool             hidden=true,              // nascosto nella lista oggetti
                     const long             z_order=0)                // priorità per il click del mouse
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- crea un' etichetta rettangolo
   if(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": fallimento nel creare l'etichetta rettangolo! Error code = ",GetLastError());
      return(false);
     }
//--- imposta le coordinate dell'etichetta
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- imposta la grandezza dell'etichetta
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- imposta colore di background
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- imposta il tipo di bordo
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border);
//--- imposta l'angolo del chart, relativo a quali punti coordinate vengono definiti
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- imposta il colore del bordo piatto (in modalità Flat)
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- imposta lo stile della linea del bordo piatto
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- imposta lo spessore del bordo piatto
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width);
//--- mostra in primo piano (false) o sottofondo (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- abilita (true) o disabilita (false) il modo di spostamento dell'etichetta con il mouse
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- nascondi (true) o mostra (falso) il nome di oggetto grafico nella lista degli oggetti
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- imposta la priorità per ricevere l'evento di un clic del mouse nel grafico
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Sposta l'etichetta rettangolo                                 |
//+--------------------------------------------------------------------------------+
bool RectLabelMove(const long   chart_ID=0,       // ID del chart
                   const string name="RectLabel"// nome dell'etichetta
                   const int    x=0,              // coordinate X
                   const int    y=0)              // coordinate Y
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- sposta l'etichetta rettangolo
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": fallimento nello spostamento delle coordinate X dell'etichetta! Error code = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": fallimento nello spostamento della coordinata Y dell'etichetta! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Cambia lo spessore dell'etichetta rettangolo |
//+--------------------------------------------------------------------------------+
bool RectLabelChangeSize(const long   chart_ID=0,       // ID del chart
                   const string name="RectLabel"// nome dell'etichetta
                           const int    width=50,         // spessore della linea
                           const int    height=18)        // altezza dell'etichetta
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- cambia la grandezza dell'etichetta
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": fallimento nel cambiare lo spessore dell'etichetta! Error code = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": fallimento nel cambiare l'altezza dell'etichetta! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Cambia il tipo di bordo dell'etichetta rettangolo             |
//+--------------------------------------------------------------------------------+
bool RectLabelChangeBorderType(const long             chart_ID=0,           // ID del chart
                               const string           name="RectLabel",     // nome dell'etichetta
                               const ENUM_BORDER_TYPE border=BORDER_SUNKEN// tipo di bordo
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- cambia il tipo di bordo
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border))
     {
      Print(__FUNCTION__,
            ": fallimento nel cambiare il tipo di bordo! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Elimina l'etichetta del rettangolo                             |
//+--------------------------------------------------------------------------------+
bool RectLabelDelete(const long   chart_ID=0,       // ID del chart
                     const string name="RectLabel"// nome etichetta
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- elimina l'etichetta
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": fallimento nell'eliminare l'etichetta del rettangolo! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Funzione di avvio del programma Script |
//+--------------------------------------------------------------------------------+
voidOnStart()
  {
//--- grandezza della finestra chart
   long x_distance;
   long y_distance;
//--- imposta la grandezza della finestra
   if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
     {
      Print("Fallimento nell'ottenere la grandezza del chart! Error code = ",GetLastError());
      return;
     }
   if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
     {
      Print("Fallimento nell'ottenere l'altezza del chart! Error code = ",GetLastError());
      return;
     }
//--- definisce le coordinate dell'etichetta rettangolo
   int x=(int)x_distance/4;
   int y=(int)y_distance/4;
//--- imposta la grandezza dell'etichetta
   int width=(int)x_distance/4;
   int height=(int)y_distance/4;
//--- crea un' etichetta rettangolo
   if(!RectLabelCreate(0,InpName,0,x,y,width,height,InpBackColor,InpBorder,InpCorner,
      InpColor,InpStyle,InpLineWidth,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- ridisegna il chart e ne attende un secondo
   ChartRedraw();
   Sleep(1000);
//--- cambia la grandezza dell'etichetta rettangolo
   int steps=(int)MathMin(x_distance/4,y_distance/4);
   for(int i=0;i<steps;i++)
     {
      //--- resize
      width+=1;
      height+=1;
      if(!RectLabelChangeSize(0,InpName,width,height))
         return;
      //--- controlla se l'operazione dello script è stata disabilitata per forza
      if(IsStopped())
         return;
      //--- ridisegna il chart ed attende 0.01 secondi
      ChartRedraw();
      Sleep(10);
     }
//--- 1 secondo di ritardo
   Sleep(1000);
//--- cambia il tipo di bordo
   if(!RectLabelChangeBorderType(0,InpName,BORDER_RAISED))
      return;
//--- redisegna il chart ed attende per 1 secondo
   ChartRedraw();
   Sleep(1000);
//--- cambia il tipo di bordo
   if(!RectLabelChangeBorderType(0,InpName,BORDER_SUNKEN))
      return;
//--- redisegna il chart ed attende per 1 secondo
   ChartRedraw();
   Sleep(1000);
//--- elimina l'etichetta
   RectLabelDelete(0,InpName);
   ChartRedraw();
//--- aspetta per 1 secondo
   Sleep(1000);
//---
  }