//--- descrizione
#property description "Lo script crea l'oggetto \"Bitmap Label\" ."
//--- mostra la finestra dei parametri di input durante il lancio dello script
#property script_show_inputs
//--- parametri di input dello script
input string InpName="BmpLabel"; // nome dell'Etichetta
input string InpFileOn="\\Images\\dollar.bmp"; // Nome del file per modalità On
input string InpFileOff="\\Images\\euro.bmp"; // Nome del File per modalità Off
input bool InpState=false; // Etichetta premuta/rilasciata
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER; // Angolo del chart per l'ancoraggio
input ENUM_ANCHOR_POINT InpAnchor=ANCHOR_CENTER; // Tipo di ancoraggio
input color InpColor=clrRed; // Colore del bordo quando si evidanzia
input ENUM_LINE_STYLE InpStyle=STYLE_SOLID; // Stile della linea quando si evidenzia
input int InpPointWidth=1; // Grandezza del punto da muovere
input bool InpBack=false; // Oggetti di sottofondo
input bool InpSelection=false; // Evidenzia di movimento
input bool InpHidden=true; // Nascosto nella lista oggetti
input long InpZOrder=0; // Priorità per il click del mouse
//+--------------------------------------------------------------------------------+
//| Crea l'oggetto Etichetta Bitmap |
//+--------------------------------------------------------------------------------+
bool BitmapLabelCreate(const long chart_ID=0, // ID del chart
const string name="BmpLabel", // nome dell'etichetta
const int sub_window=0, // indice sottofinestra
const int x=0, // coordinate X
const int y=0, // coordinate Y
const string file_on="", // immagine in modalità On
const string file_off="", // immagine in modalità Off
const int width=0, // ambito di visibilità coordinate X
const int height=0, // ambito di visibilità coordinate Y
const int x_offset=10, // ambito di visibilità, slittamento sull' asse X
const int y_offset=10, // ambito di visibilità, slittamento sull'asse Y
const bool state=false, // premuto/rilasciato
const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // angolo del chart per l'ancoraggio
const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // tipo di ancoraggio
const color clr=clrRed, // colore del bordo quando evidenziato
const ENUM_LINE_STYLE style=STYLE_SOLID, // stile della linea quando evidenziata
const int point_width=1, // grandezza del punto di spostamento
const bool back=false, // in sottofondo
const bool selection=false, // evidenzia movimento
const bool hidden=true, // nascosto dalla lista oggetti
const long z_order=0) // priorità per il click del mouse
{
//--- resetta il valore dell' errore
ResetLastError();
//--- crea un'etichetta bitmap
if(!ObjectCreate(chart_ID,name,OBJ_BITMAP_LABEL,sub_window,0,0))
{
Print(__FUNCTION__,
": fallimento nel creare l'oggetto \"Bitmap Label\"! Error code = ",GetLastError());
return(false);
}
//--- imposta l'immagine in modalità On e Off
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,0,file_on))
{
Print(__FUNCTION__,
": fallimento nel caricare l'immagine per la modalità On! Error code = ",GetLastError());
return(false);
}
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,1,file_off))
{
Print(__FUNCTION__,
": fallimento nel caricare l'immagine per la modalità Off! 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 ambito di visibilità per l'immagine; se i valori dello spessore o dell'altezza
//--- eccedono lo spessore e l'altezza(rispettivamente) di un'immagine sorgente,
//--- essa non viene disegnata; in caso contrario
//--- solo la parte corrispondente di questi valori viene disegnata
ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- imposta la parte di un'immagine che dev'essere visualizzata nell'ambito visibilità
//--- la parte di default è la parte superiore sinistra dell'immagine; i valori permettono
//--- di eseguire uno slittamento da quest' area visualizzando un'altra parte dell'immagine
ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset);
ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset);
//--- definisce lo status dell'etichetta (premuta o rilasciata)
ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- imposta l'angolo del chart, relativo a quali punti coordinate vengono definiti
ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- imposta il tipo di ancora
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- imposta il colore del bordo quando è abilitata la modalità di evidenziazione
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- imposta lo stile del bordo della linea quando la modalità di evidenzia dell'oggetto è abilitata
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- imposta la grandezza di un punto di ancoraggio per lo spostamento di un oggetto
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_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);
}
//+--------------------------------------------------------------------------------+
//| Imposta una nuova immagine per l'oggetto Etichetta Bitmap |
//+--------------------------------------------------------------------------------+
bool BitmapLabelSetImage(const long chart_ID=0, // ID del chart
const string name="BmpLabel", // nome dell'etichetta
const int on_off=0, // modificatore (On o Off)
const string file="") // percorso del file
{
//--- resetta il valore dell' errore
ResetLastError();
//--- imposta il percorso al file dell'immagine
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,on_off,file))
{
Print(__FUNCTION__,
": fallimento nel caricare l'immagine! Error code = ",GetLastError());
return(false);
}
//--- esecuzione avvenuta
return(true);
}
//+--------------------------------------------------------------------------------+
//| Sposta l'oggetto Etichetta Bitmap |
//+--------------------------------------------------------------------------------+
bool BitmapLabelMove(const long chart_ID=0, // ID del chart
const string name="BmpLabel", // nome etichetta
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);
}
//+--------------------------------------------------------------------------------+
//| Cambia grandezza ambito di visibilità (oggetto) |
//+--------------------------------------------------------------------------------+
bool BitmapLabelChangeSize(const long chart_ID=0, // ID del chart
const string name="BmpLabel", // nome dell'etichetta
const int width=0, // spessore della linea
const int height=0) // altezza dell'etichetta
{
//--- 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 le coordinate dell'angolo superiore sinistro dell'ambito di visibilità |
//+----------------------------------------------------------------------------------+
bool BitmapLabelMoveVisibleArea(const long chart_ID=0, // ID del chart
const string name="BmpLabel", // nome dell'etichetta
const int x_offset=0, // ambito di visibilità coordinate X
const int y_offset=0) // ambito di visibilità coordinate Y
{
//--- resetta il valore dell' errore
ResetLastError();
//--- cambia le coordinate dell'ambito di visibilità dell'oggetto
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset))
{
Print(__FUNCTION__,
": fallimento nel cambiare le coordinate X dell'ambito di visibilità! Error code = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset))
{
Print(__FUNCTION__,
": fallimento nel cambiare le coordinate Y dell'ambito di visibilità! Error code = ",GetLastError());
return(false);
}
//--- esecuzione avvenuta
return(true);
}
//+--------------------------------------------------------------------------------+
//| Elimina l'oggetto "Etichetta Bitmap" |
//+--------------------------------------------------------------------------------+
bool BitmapLabelDelete(const long chart_ID=0, // ID del chart
const string name="BmpLabel") // nome dell'etichetta
{
//--- resetta il valore dell' errore
ResetLastError();
//--- elimina l'etichetta
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": fallimento nell'eliminazione dell'oggetto \"Bitmap label\"! 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 bitmap
int x=(int)x_distance/2;
int y=(int)y_distance/2;
//--- imposta la grandezza dell'etichetta e le coordinate dell'ambito di visibilità
int width=32;
int height=32;
int x_offset=0;
int y_offset=0;
//--- imposta l'etichetta bitmap al centro della finestra
if(!BitmapLabelCreate(0,InpName,0,x,y,InpFileOn,InpFileOff,width,height,x_offset,y_offset,InpState,
InpCorner,InpAnchor,InpColor,InpStyle,InpPointWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- ridisegna il chart e ne attende un secondo
ChartRedraw();
Sleep(1000);
//--- cambio dell'ambito di visibilità dell'etichetta nel loop
for(int i=0;i<6;i++)
{
//--- cambia la grandezza dell'ambito di visibilità
width--;
height--;
if(!BitmapLabelChangeSize(0,InpName,width,height))
return;
//--- controlla se l'operazione dello script è stata disabilitata per forza
if(IsStopped())
return;
//--- ridisegna il chart
ChartRedraw();
// 0.3 secondi di ritardo
Sleep(300);
}
//--- 1 secondo di ritardo
Sleep(1000);
//--- cambia le coordinate dell'ambito di visibilità nel loop
for(int i=0;i<2;i++)
{
//--- cambia le coordinate dell'ambito di visibilità
x_offset++;
y_offset++;
if(!BitmapLabelMoveVisibleArea(0,InpName,x_offset,y_offset))
return;
//--- controlla se l'operazione dello script è stata disabilitata per forza
if(IsStopped())
return;
//--- ridisegna il chart
ChartRedraw();
// 0.3 secondi di ritardo
Sleep(300);
}
//--- 1 secondo di ritardo
Sleep(1000);
//--- elimina l'etichetta
BitmapLabelDelete(0,InpName);
ChartRedraw();
//--- 1 secondo di ritardo
Sleep(1000);
//---
}
|