//--- description #property description "Le script crée un bouton sur le graphique." //--- 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="Button"; // Nom du bouton input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER; // Coin du graphique pour l'ancrage input string InpFont="Arial"; // Police de caractères input int InpFontSize=14; // Taille de la police de caractères input color InpColor=clrBlack; // Couleur du texte input color InpBackColor=C'236,233,216'; // Couleur de l'arrière-plan input color InpBorderColor=clrNONE; // couleur de la bordure input bool InpState=false; // Appuyé/Relâché input bool InpBack=false; // Objet en arrière-plan input bool InpSelection=false; // Mise en surbrillance pour déplacer input bool InpHidden=true; // Caché dans la liste des objets input long InpZOrder=0; // Priorité du clic de souris //+----------------------------------------------------------------------------------------------------+ //| Crée le bouton | //+----------------------------------------------------------------------------------------------------+ bool ButtonCreate(const long chart_ID=0, // identifiant du graphique const string name="Button", // nom du bouton const int sub_window=0, // indice de sous-fenêtre const int x=0, // coordonnée X const int y=0, // coordonnée Y const int width=50, // largeur du bouton const int height=18, // hauteur du bouton const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // coin du graphique pour l'ancrage const string text="Button", // texte const string font="Arial", // police de caractères const int font_size=10, // taille de la police de caractères const color clr=clrBlack, // couleur du texte const color back_clr=C'236,233,216', // couleur en arrière-plan const color border_clr=clrNONE, // couleur de la bordure const bool state=false, // Appuyé/Relâché const bool back=false, // en arrière-plan mise en surbrillance pour le déplacement const bool selection=false, // mise en surbrillance pour le déplacement 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 le bouton if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0)) { Print(__FUNCTION__, ": imposible de créer le bouton ! Code d'erreur = ",GetLastError()); return(false); } //--- définit les coordonnées du bouton ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); //--- définit la taille du bouton ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); //--- 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 texte ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); //--- définit la police de caractères du texte ObjectSetString(chart_ID,name,OBJPROP_FONT,font); //--- définit la taille de la police de caractères ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); //--- définit la couleur du texte ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); //--- définit la couleur d'arrière-plan ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); //--- définit la couleur de la bordure ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr); //--- affiche en premier plan (false) ou en arrière-plan (true) ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- définit l'état du bouton ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state); //--- active (true) ou désactive (false) le mode de déplacement du bouton à 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éplace le bouton | //+----------------------------------------------------------------------------------------------------+ bool ButtonMove(const long chart_ID=0, // identifiant du graphique const string name="Button", // nom du bouton const int x=0, // coordonnée X const int y=0) // coordonnée Y { //--- réinitialise la valeur d'erreur ResetLastError(); //--- déplace le bouton if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x)) { Print(__FUNCTION__, " : impossible de déplacer la coordonnée X du bouton ! Code d'erreur = ",GetLastError()); return(false); } if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y)) { Print(__FUNCTION__, " : impossible de déplacer la coordonnées Y du bouton ! Code d'erreur = ",GetLastError()); return(false); } //--- exécution réussie return(true); } //+----------------------------------------------------------------------------------------------------+ //| Modifie la taille du bouton | //+----------------------------------------------------------------------------------------------------+ bool ButtonChangeSize(const long chart_ID=0, // identifiant du graphique const string name="Button", // nom du bouton const int width=50, // largeur du bouton const int height=18) // hauteur du bouton { //--- réinitialise la valeur d'erreur ResetLastError(); //--- modifie la taille du bouton if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width)) { Print(__FUNCTION__, " : impossible de modifier la largeur du bouton ! Code d'erreur = ",GetLastError()); return(false); } if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height)) { Print(__FUNCTION__, " : impossible de modifier la hauteur du bouton ! Code d'erreur = ",GetLastError()); return(false); } //--- exécution réussie return(true); } //+----------------------------------------------------------------------------------------------------+ //| Change le coin du graphique pour lier le bouton | //+----------------------------------------------------------------------------------------------------+ bool ButtonChangeCorner(const long chart_ID=0, // identifiant du graphique const string name="Button", // nom du bouton const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER) // coin du graphique pour l'ancrage { //--- réinitialise la valeur d'erreur ResetLastError(); //--- modifie le coin d'ancrage if(!ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner)) { Print(__FUNCTION__, ": impossible de modifier le coin d'ancrage ! Code d'erreur = ",GetLastError()); return(false); } //--- exécution réussie return(true); } //+----------------------------------------------------------------------------------------------------+ //| Change le texte du bouton | //+----------------------------------------------------------------------------------------------------+ bool ButtonTextChange(const long chart_ID=0, // identifiant du graphique const string name="Button", // nom du bouton const string text="Text") // texte { //--- réinitialise la valeur d'erreur ResetLastError(); //--- modifie le texte de l'objet if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,text)) { Print(__FUNCTION__, " : impossible de modifier le texte ! Code d'erreur = ",GetLastError()); return(false); } //--- exécution réussie return(true); } //+----------------------------------------------------------------------------------------------------+ //| Supprime le bouton | //+----------------------------------------------------------------------------------------------------+ bool ButtonDelete(const long chart_ID=0, // identifiant du graphique const string name="Button") // nom du bouton { //--- réinitialise la valeur d'erreur ResetLastError(); //--- supprime le bouton if(!ObjectDelete(chart_ID,name)) { Print(__FUNCTION__, " : impossible de supprimer le bouton ! 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 le pas de changement de la taille du bouton int x_step=(int)x_distance/32; int y_step=(int)y_distance/32; //--- définit les coordonnées du bouton et sa taille int x=(int)x_distance/32; int y=(int)y_distance/32; int x_size=(int)x_distance*15/16; int y_size=(int)y_distance*15/16; //--- crée le bouton if(!ButtonCreate(0,InpName,0,x,y,x_size,y_size,InpCorner,"Press",InpFont,InpFontSize, InpColor,InpBackColor,InpBorderColor,InpState,InpBack,InpSelection,InpHidden,InpZOrder)) { return; } //--- redessine le graphique ChartRedraw(); //--- réduit le bouton dans la boucle int i=0; while(i<13) { //--- délai d'une demie seconde Sleep(500); //--- bascule le bouton à l'état appuyé ObjectSetInteger(0,InpName,OBJPROP_STATE,true); //--- redessine le graphique et attends 0,2 seconde ChartRedraw(); Sleep(200); //--- redéfinit les coordonnées et la taille du bouton x+=x_step; y+=y_step; x_size-=x_step*2; y_size-=y_step*2; //--- réduit le bouton ButtonMove(0,InpName,x,y); ButtonChangeSize(0,InpName,x_size,y_size); //--- remet le bouton à l'état relâché ObjectSetInteger(0,InpName,OBJPROP_STATE,false); //--- redessine le graphique ChartRedraw(); //--- vérifie si l'exécution du script a été stoppée if(IsStopped()) return; //--- incrémente le compteur de boucle i++; } //--- délai d'une demie seconde Sleep(500); //--- supprime le bouton ButtonDelete(0,InpName); ChartRedraw(); //--- attente d'1 seconde Sleep(1000); //--- } |