MetaTrader 5 herunterladen

OBJ_BUTTON

Objekt "Schaltfläche".

ObjButton

Hinweis

Koordinaten des Ankerpunkts werden in Pixeln angegeben. Sie können den Winkel des Ankerpunktes der Schaltfläche durch Enumeration ENUM_BASE_CORNER auswählen.

Beispiel

Das folgende Skript erstellt und bewegt auf dem Chart Objekt "Schaltfläche". Um die Eigenschaften eines grafischen Objekts zu erstellen und ändern, gibt es speziale Funktionen, die Sie "wie es ist" für Ihre eigenen Programme verwenden können.

//--- Beschreibung
#property description "Das Skript erstellt eine Schaltfläche auf dem Chart."
//--- Zeigen den Fenster von Eingabeparametern in der Skript-Startup
#property script_show_inputs
//--- Eingangsparameter von Skript
input string           InpName="Button";            // Schaltflächenname
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER// Winkel des Charts zu binden
input string           InpFont="Arial";             // Schrift
input int              InpFontSize=14;              // Schriftgröße
input color            InpColor=clrBlack;           // Textfarbe
input color            InpBackColor=C'236,233,216'// Hintergrundfarbe
input color            InpBorderColor=clrNONE;      // Rahmenfarbe
input bool             InpState=false;              // Gedrückt/Ungedrückt
input bool             InpBack=false;               // Objekt im Hintergrund
input bool             InpSelection=false;          // Wählen zu bewegen
input bool             InpHidden=true;              // Ausgeblendet in der Liste der Objekte
input long             InpZOrder=0;                 // Priorität auf Mausklick
//+------------------------------------------------------------------+
//| Erstellt eine Taste                                              |
//+------------------------------------------------------------------+
bool ButtonCreate(const long              chart_ID=0,               // ID des Charts
                  const string            name="Button",            // Schaltflächenname
                  const int               sub_window=0,             // Nummer des Unterfensters
                  const int               x=0,                      // X-Koordinate
                  const int               y=0,                      // Y-Koordinate
                  const int               width=50,                 // Breite der Schaltfläche
                  const int               height=18,                // Höhe der Schaltfläche
                  const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER// Winkel des Charts zu binden
                  const string            text="Button",            // Text
                  const string            font="Arial",             // Schrift
                  const int               font_size=10,             // Schriftgröße
                  const color             clr=clrBlack,             // Textfarbe
                  const color             back_clr=C'236,233,216',  // Hintergrundfarbe
                  const color             border_clr=clrNONE,       // Rahmenfarbe
                  const bool              state=false,              // Gedrückt/Ungedrückt
                  const bool              back=false,               // Im Hintergrund
                  const bool              selection=false,          // Auswählen um zu bewegen
                  const bool              hidden=true,              // Ausgeblendet in der Objektliste
                  const long              z_order=0)                // Priorität auf Mausklick
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- eine Schaltfläche erstellen
   if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": Konnte nicht Schaltfläche erstellen! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- Schaltflächenkoordinaten setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- Schaltflächengröße setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- wählen die Ecke des Charts, relativ zu der die Punktkoordinaten eingegeben werden
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- den Text setzen
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- Textschrift setzen
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- Schriftgröße setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- Textfarbe setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- Hintergrundfarbe setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- Rahmenfarbe setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
//--- Im Vordergrund (false) oder Hintergrund (true) anzeigen
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- set button state
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- aktivieren (true) oder deaktivieren (false) Bewegung der Schaltfläche mit dem Maus
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- Verbergen (true) oder Anzeigen (false) den Namen des graphischen Objektes in der Objektliste
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- setzen die Priorität für eine Mausklick-Ereignisse auf dem Chart
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- die erfolgreiche Umsetzung
   return(true);
 ;}
//+------------------------------------------------------------------+
//| Bewegt die Schaltfläche                                          |
//+------------------------------------------------------------------+
bool ButtonMove(const long   chart_ID=0,    // ID des Charts
                const string name="Button"// Name der Schaltfläche
                const int    x=0,           // X Koordinate
                const int    y=0)           // Y Koordinate
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Schaltfläche bewegen
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": Kann nicht X-Koordinate der Schaltfläche bewegen! Fehlercode = ",GetLastError());
      return(false);
    ;}
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": Kann nicht Y-Koordinate der Schaltfläche bewegen! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- die erfolgreiche Umsetzung
   return(true);
 ;}
//+------------------------------------------------------------------+
//| Ändert die Größe einer Schaltfläche                              |
//+------------------------------------------------------------------+
bool ButtonChangeSize(const long   chart_ID=0,    // ID des Charts
                      const string name="Button"// Name der Schaltfläche
                      const int    width=50,      // Breite der Schaltfläche
                      const int    height=18)     // Höhe der Schaltfläche
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Größe der Schaltfläche ändern
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": Konnte nicht die Breite der Schaltfläche ändern! Fehlercode = ",GetLastError());
      return(false);
    ;}
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": Konnte nicht die Höhe der Schaltfläche ändern! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- die erfolgreiche Umsetzung
   return(true);
 ;}
//+------------------------------------------------------------------+
//| Ändert Winkel des Charts die Taste zu binden                     |
//+------------------------------------------------------------------+
bool ButtonChangeCorner(const long             chart_ID=0,               // ID des Charts
                        const string           name="Button",            // Name der Schaltfläche
                        const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER// Winkel des Charts zu binden
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Winkel der Bindung ändern
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner))
     {
      Print(__FUNCTION__,
            ": Kann den Winkel der Bindung nicht ändern! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- die erfolgreiche Umsetzung
   return(true);
 ;}
//+------------------------------------------------------------------+
//| Ändert Text der Schaltfläche                                     |
//+------------------------------------------------------------------+
bool ButtonTextChange(const long   chart_ID=0,    // ID des Chart
                      const string name="Button"// Name der Schaltfläche
                      const string text="Text")   // Text
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- ändern wir den Text des Objektes
   if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,text))
     {
      Print(__FUNCTION__,
            ": Konnte nicht den Text ändern! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- die erfolgreiche Umsetzung
   return(true);
 ;}
//+------------------------------------------------------------------+
//| Löscht die Schaltfläche                                          |
//+------------------------------------------------------------------+
bool ButtonDelete(const long   chart_ID=0,    // ID des Charts
                  const string name="Button"// Name der Schaltfläche
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- die Schaltfläche löschen
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": Könnte nicht die Schaltfläche löschen! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- die erfolgreiche Umsetzung
   return(true);
 ;}
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Größe des Chartfensters
   long x_distance;
   long y_distance;
//--- Größe des Chartfensters definieren
   if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
     {
      Print("Konnte nicht Breite des Charts bekommen! Fehlercode = ",GetLastError());
      return;
    ;}
   if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
     {
      Print("Konnte nicht Höhe des Charts bekommen! Fehlercode = ",GetLastError());
      return;
    ;}
//--- Schritt für Änderung der Schaltflächengröße definieren
   int x_step=(int)x_distance/32;
   int y_step=(int)y_distance/32;
//--- Schaltflächenkoordinaten und ihre Größe setzen
   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;
//--- eine Schaltfläche erstellen
   if(!ButtonCreate(0,InpName,0,x,y,x_size,y_size,InpCorner,"Press",InpFont,InpFontSize,
      InpColor,InpBackColor,InpBorderColor,InpState,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
    ;}
//--- den Chart neu zeichnen
   ChartRedraw();
//--- Verkleinern die Schaltfläche im Zyklus
   int i=0;
   while(i<13)
     {
      //--- Halb-Sekunden-Verzögerung
      Sleep(500);
      //--- Die Schaltfläche gedrückt setzen
      ObjectSetInteger(0,InpName,OBJPROP_STATE,true);
      //--- Die Grafik neu zeichnen und 0,2 Sekunden warten
      ChartRedraw();
      Sleep(200);
      //--- die Position und Größe der Schaltfläche neu definieren
      x+=x_step;
      y+=y_step;
      x_size-=x_step*2;
      y_size-=y_step*2;
      //--- Schaltfläche verkleinern
      ButtonMove(0,InpName,x,y);
      ButtonChangeSize(0,InpName,x_size,y_size);
      //--- Schaltfläche im ungedrückt Zustand setzen
      ObjectSetInteger(0,InpName,OBJPROP_STATE,false);
      //--- den Chart neu zeichnen
      ChartRedraw();
 //--- Überprüfen die Fakten von Zwangsabschaltung der Skript
      if(IsStopped())
         return;
      //--- Zykluszähler erhöhen
      i++;
    ;}
//--- Halb-Sekunden-Verzögerung
   Sleep(500);
//--- die Schaltfläche löschen
   ButtonDelete(0,InpName);
   ChartRedraw();
//--- 1 Sekunde warten
   Sleep(1000);
//---
 ;}