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