//--- description
#property description "Le script crée un objet \"Etiquette Bitmap\" objet."
//--- affichage de la fenêtre des paramètres d'entrée lors du lancement du script
#property script_show_inputs
//--- paramètres d'entrée du script
input string InpName="BmpLabel"; // Nom de l'étiquette
input string InpFileOn="\\Images\\dollar.bmp"; // Nom du fichier en mode On
input string InpFileOff="\\Images\\euro.bmp"; // Nom du fichier en mode Off
input bool InpState=false; // Etiquette Appuyée/Relâchée
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER; // Coin d'ancrage dans le graphique
input ENUM_ANCHOR_POINT InpAnchor=ANCHOR_CENTER; // Type d'ancrage
input color InpColor=clrRed; // Couleur de la bordure en surbrillance
input ENUM_LINE_STYLE InpStyle=STYLE_SOLID; // Style de trait en surbrillance
input int InpPointWidth=1; // Taille du point à déplacer
input bool InpBack=false; // Objet en arrière-plan
input bool InpSelection=false; // Mise en surbrillance pour le déplacement
input bool InpHidden=true; // Caché dans la liste des objets
input long InpZOrder=0; // Priorité du clic de souris
//+----------------------------------------------------------------------------------------------------+
//| Crée l'objet de l'Etiquette Bitmap |
//+----------------------------------------------------------------------------------------------------+
bool BitmapLabelCreate(const long chart_ID=0, // identifiant du graphique
const string name="BmpLabel", // nom de l'étiquette
const int sub_window=0, // indice de la sous-fenêtre
const int x=0, // coordonnée X
const int y=0, // coordonnée Y
const string file_on="", // image en mode On
const string file_off="", // image en mode Off
const int width=0, // Coordonnée X de la zone visible
const int height=0, // Coordonnée Y de la zone visible
const int x_offset=10, // Décalage de la zone visible sur l'axe X
const int y_offset=10, // Décalage de la zone visible sur l'axe Y
const bool state=false, // appuyé/relâché
const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // coin du graphique pour l'ancrage
const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // type d'ancrage
const color clr=clrRed, // couleur de la bordure en surbrillance
const ENUM_LINE_STYLE style=STYLE_SOLID, // Style de trait en surbrillance
const int point_width=1, // déplace la taille du point
const bool back=false, // en arrière-plan
const bool selection=false, // mise en surbrillance pour déplacer
const bool hidden=true, // caché dans la liste des objets
const long z_order=0) // priorité du clic de souris
{
//--- réinitialise la valeur d'erreur
ResetLastError();
//--- crée une étiquette bitmap
if(!ObjectCreate(chart_ID,name,OBJ_BITMAP_LABEL,sub_window,0,0))
{
Print(__FUNCTION__,
" : n'a pas réussi à créer l'objet \"Etiquette Bitmap\" ! Code d'erreur = ",GetLastError());
return(false);
}
//--- définit les images en mode On et Off
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,0,file_on))
{
Print(__FUNCTION__,
": impossible de charger l'image en mode On ! Code d'erreur = ",GetLastError());
return(false);
}
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,1,file_off))
{
Print(__FUNCTION__,
" : impossible de charger l'image en mode Off ! Code d'erreur = ",GetLastError());
return(false);
}
//--- définit les coordonnées de l'étiquette
ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- définit la zone visible de l'omage ; si la largeur et la hauteur
//--- excèdent la largeur et la hauteur (respectivement) d'une image source,
//--- elle n'est pas dessinée ; dans le cas opposé,
//--- seule la partie correspondant à ces valeurs sera dessinée
ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- définit la partie d'une image à afficher dans la zone visible
//--- la partie par défaut est la partie supérieure gauche de l'image ; les valeurs permettent
//--- d'effectuer un décalage de cette zone pour afficher une autre partie de l'image
ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset);
ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset);
//--- définit le statut de l'étiquette (appuyé ou relâché)
ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- définit le coin du graphique, relativement auquel les coordonnées du point sont définies
ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- définit le type d'ancrage
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- définit la couleur de la bordure lorsque le mode de mise en surbrillance de l'objet est activé
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- définit le style de ligne de la bordure lorsque le mode de mise en surbrillance de l'objet est activé
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- définit la taille du point d'ancrage pour déplacer un objet
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_width);
//--- affiche en premier plan (false) ou en arrière-plan (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- active (true) ou désactive (false) le mode de déplacement de l'étiquette par la souris
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- masque (true) ou affiche (false) le nom de l'objet graphique dans la liste des objets
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- définit la priorité pour recevoir l'événement d'un clic de souris dans le graphique
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- exécution réussie
return(true);
}
//+----------------------------------------------------------------------------------------------------+
//| Définit une nouvelle image pour l'étiquette de l'objet Bitmap |
//+----------------------------------------------------------------------------------------------------+
bool BitmapLabelSetImage(const long chart_ID=0, // identifiant du graphique
const string name="BmpLabel", // nom de l'étiquette
const int on_off=0, // modificateur (On ou Off)
const string file="") // chemin vers le fichier
{
//--- réinitialise la valeur d'erreur
ResetLastError();
//--- définit le chemin d'accès au fichier image
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,on_off,file))
{
Print(__FUNCTION__,
" : impossible de charger l'image ! Code d'erreur = ",GetLastError());
return(false);
}
//--- exécution réussie
return(true);
}
//+----------------------------------------------------------------------------------------------------+
//| Déplace l'objet de l'Etiquette Bitmap |
//+----------------------------------------------------------------------------------------------------+
bool BitmapLabelMove(const long chart_ID=0, // identifiant du graphique
const string name="BmpLabel", // nom de l'étiquette
const int x=0, // coordonnée X
const int y=0) // coordonnée y
{
//--- réinitialise la valeur d'erreur
ResetLastError();
//--- déplace l'objet
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
{
Print(__FUNCTION__,
" : impossible de déplacer la coordonnée X de l'objet ! Code d'erreur = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
{
Print(__FUNCTION__,
" : impossible de déplacer la coordonnée Y de l'objet ! Code d'erreur = ",GetLastError());
return(false);
}
//--- exécution réussie
return(true);
}
//+----------------------------------------------------------------------------------------------------+
//| Change la taille de la zone visible (objet) |
//+----------------------------------------------------------------------------------------------------+
bool BitmapLabelChangeSize(const long chart_ID=0, // identifiant du graphique
const string name="BmpLabel", // nom de l'étiquette
const int width=0, // largeur de l'étiquette
const int height=0) // hauteur de l'étiquette
{
//--- réinitialise la valeur d'erreur
ResetLastError();
//--- modifie la taille de l'objet
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
{
Print(__FUNCTION__,
" : impossible de modifier la largeur de l'objet ! Code d'erreur = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
{
Print(__FUNCTION__,
" : impossible de modifier la heuteur de l'objet ! Code d'erreur = ",GetLastError());
return(false);
}
//--- exécution réussie
return(true);
}
//+--------------------------------------------------------------------------------+
//| Change les coordonnées du coin supérieur gauche de la zone visible |
//+--------------------------------------------------------------------------------+
bool BitmapLabelMoveVisibleArea(const long chart_ID=0, // identifiant du graphique
const string name="BmpLabel", // nom de l'étiquette
const int x_offset=0, // Coordonnée X de la zone visible
const int y_offset=0) // Coordonnée Y de la zone visible
{
//--- réinitialise la valeur d'erreur
ResetLastError();
//--- change les coordonnées de l'objet de la zone visible
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset))
{
Print(__FUNCTION__,
" : échec du changement de la coordonnée X de la zone visible ! Code d'erreur = ",GetLastError());
return(false);
}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset))
{
Print(__FUNCTION__,
" : échec du changement de la coordonnée Y de la zone visible ! Code d'erreur = ",GetLastError());
return(false);
}
//--- exécution réussie
return(true);
}
//+----------------------------------------------------------------------------------------------------+
//| Supprime l'objet "Etiquette Bitmap" |
//+----------------------------------------------------------------------------------------------------+
bool BitmapLabelDelete(const long chart_ID=0, // identifiant du graphique
const string name="BmpLabel") // nom de l'étiquette
{
//--- réinitialise la valeur d'erreur
ResetLastError();
//--- supprime l'étiquette
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
" : impossible de supprimer l'objet \"Etiquette Bitmap\" ! Code d'erreur = ",GetLastError());
return(false);
}
//--- exécution réussie
return(true);
}
//+----------------------------------------------------------------------------------------------------+
//| Fonction de démarrage du script |
//+----------------------------------------------------------------------------------------------------+
void OnStart()
{
//--- taille de la fenêtre du graphique
long x_distance;
long y_distance;
//--- définit la taille de la fenêtre
if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
{
Print("Impossible d'obtenir la largeur du graphique ! Code d'erreur = ",GetLastError());
return;
}
if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
{
Print("Impossible d'obtenir la hauteur du graphique ! Code d'erreur = ",GetLastError());
return;
}
//--- définit les coordonnées de l'étiquette bitmap
int x=(int)x_distance/2;
int y=(int)y_distance/2;
//--- définit la taille de l'étiquette et les coordonnées de la zone visible
int width=32;
int height=32;
int x_offset=0;
int y_offset=0;
//--- place l'étiquette bitmap au centre de la fenêtre
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;
}
//--- redéssine le graphique et attend 1 seconde
ChartRedraw();
Sleep(1000);
//--- change la taille de la zone visible de l'étiquette dans la boucle
for(int i=0;i<6;i++)
{
//--- change la taille de la zone visible
width--;
height--;
if(!BitmapLabelChangeSize(0,InpName,width,height))
return;
//--- vérifie si l'exécution du script a été stoppée
if(IsStopped())
return;
//--- redessine le graphique
ChartRedraw();
// 0.3 seconde de délai
Sleep(300);
}
//--- délai de 1 seconde
Sleep(1000);
//--- change les coordonnées de la zone visible de l'étiquette dans la boucle
for(int i=0;i<2;i++)
{
//--- change les coordonnées de la zone visible
x_offset++;
y_offset++;
if(!BitmapLabelMoveVisibleArea(0,InpName,x_offset,y_offset))
return;
//--- vérifie si l'exécution du script a été stoppée
if(IsStopped())
return;
//--- redessine le graphique
ChartRedraw();
// 0.3 seconde de délai
Sleep(300);
}
//--- délai de 1 seconde
Sleep(1000);
//--- supprime l'étiquette
BitmapLabelDelete(0,InpName);
ChartRedraw();
//--- délai de 1 seconde
Sleep(1000);
//---
}
|