OBJ_EDIT

Oggetto Modifica.

ObjEdit

Nota

Le coordinate del punto di ancoraggio sono impostate in pixels. Puoi selezionare l'angolo di ancoraggio Modifica dall'enumerazione ENUM_BASE_CORNER.

È anche possibile selezionare uno dei tipi di allineamento del testo all'interno di Modifica dall'enumerazione ENUM_ALIGN_MODE.

Esempio

Il seguente script crea e sposta l'oggetto Modifica 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 \"Modifica\" ."
//--- mostra la finestra dei parametri di input durante il lancio dello script
#property script_show_inputs
//--- parametri di input dello script
input string           InpName="Edit";              // Nome dell'oggetto
input string           InpText="Text";              // Testo dell'oggetto
input string           InpFont="Arial";             // Font
input int              InpFontSize=14;              // Grandezza Font
input ENUM_ALIGN_MODE  InpAlign=ALIGN_CENTER;       // Tipo di allineamento testo
input bool             InpReadOnly=false;           // Permesso di modifica
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER// Angolo del chart per l'ancoraggio
input color            InpColor=clrBlack;           // Colore del testo
input color            InpBackColor=clrWhite;       // Colore di sottofondo
input color            InpBorderColor=clrBlack;     // Colore bordo
input bool             InpBack=false;               // Oggetto sottofondo
input bool             InpSelection=false;          // Evidenzia movimento
input bool             InpHidden=true;              // Nascosto nella lista oggetti
input long             InpZOrder=0;                 // Priorità per il click del mouse
//+--------------------------------------------------------------------------------+
//| Crea Oggetto Modifica                                                          |
//+--------------------------------------------------------------------------------+
bool EditCreate(const long             chart_ID=0,               // ID del chart
                const string           name="Edit",              // nome dell'oggetto
                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 string           text="Text",              // testo
                const string           font="Arial",             // font
                const int              font_size=10,             // grandezza font
                const ENUM_ALIGN_MODE  align=ALIGN_CENTER,       // tipo di allineamento
                const bool             read_only=false,          // abilita per modificare
                const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER// angolo del chart per l'ancoraggio
                const color            clr=clrBlack,             // colore del teato
                const color            back_clr=clrWhite,        // colore di sottofondo
                const color            border_clr=clrNONE,       // colore del bordo
                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 il campo modifica
   if(!ObjectCreate(chart_ID,name,OBJ_EDIT,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": fallimento nel creare l'oggetto \"Modifica\" ! Error code = ",GetLastError());
      return(false);
     }
//--- imposta le coordinate dell'oggetto
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- imposta la grandezza dell'oggetto
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- imposta il testo
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- imposta il font
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- imposta grandezza font
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- imposta il tipo di allineamento di testo nell'oggetto
   ObjectSetInteger(chart_ID,name,OBJPROP_ALIGN,align);
//--- abilita (true) o annulla (false) la modalità sola-lettura
   ObjectSetInteger(chart_ID,name,OBJPROP_READONLY,read_only);
//--- imposta l'angolo del chart, relativo a quali coordinate oggetto sono definite
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- set text color
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- imposta colore di background
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- imposta colore del bordo
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
//--- 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 oggetto Modifica                                                        |
//+--------------------------------------------------------------------------------+
bool EditMove(const long   chart_ID=0,  // ID del chart
              const string name="Edit"// nome oggetto
              const int    x=0,         // Coordinate X
              const int    y=0)         // Coordinate Y
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- sposta l'oggetto
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": fallimento nello spostamento delle coordinate X dell'oggetto! Error code = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": fallimento nello spostamento della coordinata Y dell'oggetto! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Ridimensione oggetto Modifica                                                  |
//+--------------------------------------------------------------------------------+
bool EditChangeSize(const long   chart_ID=0,  // ID del chart
                    const string name="Edit"// nome oggetto
                    const int    width=0,     // spessore
                    const int    height=0)    // altezza
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- cambia la grandezza dell'oggetto
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": fallimento nel cambiare lo spessore dell'oggetto! Error code = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": fallimento nel cambiare l'altezza dell'oggetto! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Cambia il testo dell'oggetto Modifica                                          |
//+--------------------------------------------------------------------------------+
bool EditTextChange(const long   chart_ID=0,  // ID del chart
                    const string name="Edit"// nome oggetto
                    const string text="Text"// testo
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- cambia il testo dell'oggetto
   if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,text))
     {
      Print(__FUNCTION__,
            ": fallimento nel cambiare il testo! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Restituisce il testo dell'oggetto Modifica                                     |
//+--------------------------------------------------------------------------------+
bool EditTextGet(string      &text,        // testo
                 const long   chart_ID=0,  // ID del chart
                 const string name="Edit"// nome oggetto
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- ottiene il testo dell'oggetto
   if(!ObjectGetString(chart_ID,name,OBJPROP_TEXT,0,text))
     {
      Print(__FUNCTION__,
            ": fallimento nell'ottenere il testo! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Elimina l'oggetto Modifica                                                     |
//+--------------------------------------------------------------------------------+
bool EditDelete(const long   chart_ID=0,  // ID del chart
                const string name="Edit"// nome dell'oggetto
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- elimina l'etichetta
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": fallimento nell'eliminare l'oggetto \"Modifica\"! 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 lo step per cambiare il campo Modifica
   int x_step=(int)x_distance/64;
//--- imposta le coordinate del campo Modifica e la sua grandezza
   int x=(int)x_distance/8;
   int y=(int)y_distance/2;
   int x_size=(int)x_distance/8;
   int y_size=InpFontSize*2;
//--- memorizza il testo nella variabile locale
   string text=InpText;
//--- crea il campo modifica
   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;
     }
//--- redisegna il chart ed attende per 1 secondo
   ChartRedraw();
   Sleep(1000);
//--- allunga il campo Modifica
   while(x_size-x<x_distance*5/8)
     {
      //--- incrementa lo spessore del campo Modifica
      x_size+=x_step;
      if(!EditChangeSize(0,InpName,x_size,y_size))
         return;
      //--- controlla se l'operazione dello script è stata disabilitata per forza
      if(IsStopped())
         return;
      //--- ridisegna il grafico ed attende per 0.05 secondi
      ChartRedraw();
      Sleep(50);
     }
//--- ritardo di mezzo secondo
   Sleep(500);
//--- cambia il testo
   for(int i=0;i<20;i++)
     {
      //--- aggiunge "+" all'inizio ed alla fine
      text="+"+text+"+";
      if(!EditTextChange(0,InpName,text))
         return;
      //--- controlla se l'operazione dello script è stata disabilitata per forza
      if(IsStopped())
         return;
      //--- redisegna il chart ed attende per 0.1 secondi
      ChartRedraw();
      Sleep(100);
     }
//--- ritardo di mezzo secondo
   Sleep(500);
//--- elimina il campo modifica
   EditDelete(0,InpName);
   ChartRedraw();
//--- aspetta per 1 secondo
   Sleep(1000);
//---
  }