//--- 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);
//---
}
|