MetaTrader 5 herunterladen

OBJ_EDIT

Object "Eingabefeld".

ObjEdit

Hinweis

Koordinaten des Ankerpunkts werden in Pixeln angegeben. Sie können den Winkel des Ankerpunktes des Objekts "Eingabefeld" durch Enumeration ENUM_BASE_CORNER auswählen.

Sie können auch eine der Ausrichtung von Text innerhalb der "Eingabefelds" in Enumeration ENUM_ALIGN_MODE wählen.

Beispiel

Das folgende Skript erstellt und bewegt auf dem Chart Objekt "Eingabefeld". 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 das Objekt \"Eingabefeld\"."
//--- Zeigen den Fenster von Eingabeparametern in der Skript-Startup
#property script_show_inputs
//--- Eingangsparameter von Skript
input string           InpName="Edit";              // Objektname
input string           InpText="Text";              // Objekttext
input string           InpFont="Arial";             // Schrift
input int              InpFontSize=14;              // Schriftgröße
input ENUM_ALIGN_MODE  InpAlign=ALIGN_CENTER;       // Textausrichtung
input bool             InpReadOnly=false;           // Bearbeitung
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER// Winkel des Charts zu binden
input color            InpColor=clrBlack;           // Textfarbe
input color            InpBackColor=clrWhite;       // Hintergrundfarbe
input color            InpBorderColor=clrBlack;     // Rahmenfarbe
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 das Objekt "Eingabefeld"                                |
//+------------------------------------------------------------------+
bool EditCreate(const long             chart_ID=0,               // ID des Charts
                const string           name="Edit",              // Objektname
                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
                const int              height=18,                // Höhe
                const string           text="Text",              // Text
                const string           font="Arial",             // Schrift
                const int              font_size=10,             // Schriftgröße
                const ENUM_ALIGN_MODE  align=ALIGN_CENTER,       // Textausrichtung
                const bool             read_only=false,          // Bearbeitung
                const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER// Winkel des Charts um Objekt zu binden
                const color            clr=clrBlack,             // Textfarbe
                const color            back_clr=clrWhite,        // Hintergrundfarbe
                const color            border_clr=clrNONE,       // Rahmenfarbe
                const bool             back=false,               // Im Hintergrund
                const bool             selection=false,          // Wä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();
//--- Eingabefeld erstellen
   if(!ObjectCreate(chart_ID,name,OBJ_EDIT,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": Objekt \"Eingabefeld\" konnte nicht erstellt werden! Fehlercode = ",GetLastError());
      return(false);
     }
//--- Objektkoordinaten angeben
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- Objektgröße setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- 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);
//--- Modus von Textausrichtung im Objekt setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_ALIGN,align);
//--- aktivieren (true) oder deaktivieren (false) den schreibgeschützten Modus
   ObjectSetInteger(chart_ID,name,OBJPROP_READONLY,read_only);
//--- setzen die Ecke des Diagramms, in Bezug auf die die Koordinaten des Objekts bestimmt werden
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- 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);
//--- Aktivieren (true) oder deaktivieren (false) Mausbewegung Modus
   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 das Objekt "Eingabefeld"                                  |
//+------------------------------------------------------------------+
bool EditMove(const long   chart_ID=0,  // ID des Charts
              const string name="Edit"// Objektname
              const int    x=0,         // X-Koordinate
              const int    y=0)         // Y-Koordinate
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Objekt bewegen
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": X-Koordinate des Objekts konnte nicht bewegt werden! Fehlercode = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": Y-Koordinate des Objekts konnte nicht bewegt werden! Fehlercode = ",GetLastError());
      return(false);
     }
//--- die erfolgreiche Umsetzung
   return(true);
  }
//+------------------------------------------------------------------+
//| Ändert die Größe des Objektes "Eingabefeld"                      |
//+------------------------------------------------------------------+
bool EditChangeSize(const long   chart_ID=0,  // ID des Charts
                    const string name="Edit"// Objektname
                    const int    width=0,     // Breite
                    const int    height=0)    // Höhe
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Objektgröße ändern
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": Breite des Objekts konnte nicht geändert werden! Fehlercode = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": Höhe des Objekts konnte nicht geändert werden! Fehlercode = ",GetLastError());
      return(false);
     }
//--- die erfolgreiche Umsetzung
   return(true);
  }
//+------------------------------------------------------------------+
//| Ändert den Text des Objektes "Eingabefeld"                       |
//+------------------------------------------------------------------+
bool EditTextChange(const long   chart_ID=0,  // ID des Charts
                    const string name="Edit"// Objektname
                    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);
  }
//+------------------------------------------------------------------+
//| Gibt den Text des Objektes "Eingabefeld" zurück                  |
//+------------------------------------------------------------------+
bool EditTextGet(string      &text,        // Text
                 const long   chart_ID=0,  // ID des Charts
                 const string name="Edit"// Objektname
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- erhalten wir den Text des Objektes
   if(!ObjectGetString(chart_ID,name,OBJPROP_TEXT,0,text))
     {
      Print(__FUNCTION__,
            ": Konnte nicht den Text erhalten! Fehlercode = ",GetLastError());
      return(false);
     }
//--- die erfolgreiche Umsetzung
   return(true);
  }
//+------------------------------------------------------------------+
//| Löscht das Objekt "Eingabefeld"                                  |
//+------------------------------------------------------------------+
bool EditDelete(const long   chart_ID=0,  // ID des Charts
                const string name="Edit"// Objektname
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- das Schild löschen
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": Objekt \"Eingabefeld\" konnte nicht gelöscht werden! 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 Eingabefeldgröße definieren
   int x_step=(int)x_distance/64;
//--- Eingabefeldkoordinaten und seine Größe setzen
   int x=(int)x_distance/8;
   int y=(int)y_distance/2;
   int x_size=(int)x_distance/8;
   int y_size=InpFontSize*2;
//--- den Text in einer lokalen Variable speichern
   string text=InpText;
//--- Eingabefeld erstellen
   if(!EditCreate(0,InpName,0,x,y,x_size,y_size,InpText,InpFont,InpFontSize,InpAlign,InpReadOnly,
      InpCorner,InpColor,InpBackColor,InpBorderColor,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- den Chart neu zeichnen und 1 Sekunde warten
   ChartRedraw();
   Sleep(1000);
//--- Eingabefeld strecken
   while(x_size-x<x_distance*5/8)
     {
      //--- Breite der Eingabefeld erhöhen
      x_size+=x_step;
      if(!EditChangeSize(0,InpName,x_size,y_size))
         return;
 //--- Überprüfen die Fakten von Zwangsabschaltung der Skript
      if(IsStopped())
         return;
      //--- Die Grafik neu zeichnen und 0,05 Sekunden warten
      ChartRedraw();
      Sleep(50);
     }
//--- Halb-Sekunden-Verzögerung
   Sleep(500);
//--- Text ändern
   for(int i=0;i<20;i++)
     {
      //--- "+" am Anfang und am Ende hinzufügen
      text="+"+text+"+";
      if(!EditTextChange(0,InpName,text))
         return;
 //--- Überprüfen die Fakten von Zwangsabschaltung der Skript
      if(IsStopped())
         return;
      //--- Die Grafik neu zeichnen und 0,1 Sekunden warten
      ChartRedraw();
      Sleep(100);
     }
//--- Halb-Sekunden-Verzögerung
   Sleep(500);
//--- Eingabefeld löschen
   EditDelete(0,InpName);
   ChartRedraw();
//--- 1 Sekunde warten
   Sleep(1000);
//---
  }