OBJ_RECTANGLE_LABEL

Objekt "Rechteckiges Label."

ObjRectangleLabel

Hinweis

Koordinaten des Ankerpunkts werden in Pixeln angegeben. Sie können den Winkel des Anbindepunktes des rechteckigen Labels durch Enumeration ENUM_BASE_CORNER wählen. Rahmentyp für ein rechteckiges Label kann durch ENUM_BORDER_TYPE gesetzt werden.

Es wird für Erstellung und Gestaltung der grafischen Benutzerschnittstelle verwendet.

Beispiel

Das folgende Skript erstellt und bewegt auf dem Chart Objekt "Rechteckiges Label". 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 ein graphisches Objekt \"Rechteckiges Label\"."
//--- Zeigen den Fenster von Eingabeparametern in der Skript-Startup
#property script_show_inputs
//--- Eingangsparameter von Skript
input string           InpName="RectLabel";         // Label Name
input color            InpBackColor=clrSkyBlue;     // Hintergrundfarbe
input ENUM_BORDER_TYPE InpBorder=BORDER_FLAT;       // Rahmentyp
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER// Winkel des Charts zu binden
input color            InpColor=clrDarkBlue;        // Die Farbe des flachen Randes (Flat)
input ENUM_LINE_STYLE  InpStyle=STYLE_SOLID;        // Stil des flachen Randes (Flat)
input int              InpLineWidth=3;              // Dicke des flachen Randes (Flat) 
input bool             InpBack=false;               // Objekt im Hintergrund
input bool             InpSelection=true;           // Wählen um zu bewegen
input bool             InpHidden=true;              // Ausgeblendet in der Liste der Objekte
input long             InpZOrder=0;                 // Priorität auf Mausklick
//+------------------------------------------------------------------+
//| Erstellt ein rechteckiges Label                                  |
//+------------------------------------------------------------------+
bool RectLabelCreate(const long             chart_ID=0,               // ID des Charts
                     const string           name="RectLabel",         // Label Name
                     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 color            back_clr=C'236,233,216',  // Hintergrundfarbe
                     const ENUM_BORDER_TYPE border=BORDER_SUNKEN,     // Rahmentyp
                     const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER// Winkel des Charts um Objekt zu binden
                     const color            clr=clrRed,               // Die Farbe des flachen Randes (Flat)
                     const ENUM_LINE_STYLE  style=STYLE_SOLID,        // Stil des flachen Randes (Flat)
                     const int              line_width=1,             // Breite des flachen Randes (Flat)
                     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();
//--- ein rechteckiges Label erstellen
   if(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": rechteckiges Label konnte nicht erstellt werden! Fehlercode = ",GetLastError());
      return(false);
     }
//--- Die Koordinaten des Schilds setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- Labelgröße setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- Hintergrundfarbe setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- Rahmentyp setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border);
//--- wählen die Ecke des Charts, relativ zu der die Punktkoordinaten eingegeben werden
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- Die Farbe des flachen Randes (in Modus Flat) setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- Linienstil des flachen Rahmens setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- Breite des flachen Rahmens setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width);
//--- 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 ein rechteckiges Label                                    |
//+------------------------------------------------------------------+
bool RectLabelMove(const long   chart_ID=0,       // ID des Charts
                   const string name="RectLabel"// Label Name
                   const int    x=0,              // X-Koordinate
                   const int    y=0)              // Y-Koordinate
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- ein rechteckiges Label bewegen
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": Kann nicht X-Koordinate des Labels bewegen! Fehlercode = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": Kann nicht Y-Koordinate des Labels bewegen! Fehlercode = ",GetLastError());
      return(false);
     }
//--- die erfolgreiche Umsetzung
   return(true);
  }
//+------------------------------------------------------------------+
//| Ändert die Größe eines rechteckigen Labels                       |
//+------------------------------------------------------------------+
bool RectLabelChangeSize(const long   chart_ID=0,       // ID des Charts
                         const string name="RectLabel"// Name des Labels
                         const int    width=50,         // Breite des Labels
                         const int    height=18)        // Höhe des Labels
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Größe des Labels ändern
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": Konnte nicht die Breite des Labels ändern! Fehlercode = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": Konnte nicht die Höhe des Labels ändern! Fehlercode = ",GetLastError());
      return(false);
     }
//--- die erfolgreiche Umsetzung
   return(true);
  }
//+------------------------------------------------------------------+
//| Ändert den Rahmentyp des rechteckigen Labels                     |
//+------------------------------------------------------------------+
bool RectLabelChangeBorderType(const long             chart_ID=0,           // ID des Charts
                               const string           name="RectLabel",     // Name des Labels
                               const ENUM_BORDER_TYPE border=BORDER_SUNKEN// Rahmentyp
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Rahmentyp ändern
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border))
     {
      Print(__FUNCTION__,
            ": Konnte nicht Rahmentyp ändern! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- die erfolgreiche Umsetzung
   return(true);
  }
//+------------------------------------------------------------------+
//| Löscht ein rechteckiges Label                                    |
//+------------------------------------------------------------------+
bool RectLabelDelete(const long   chart_ID=0,       // ID des Charts
                     const string name="RectLabel"// Name des Labels
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- das Schild löschen
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": rechteckiges Label 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;
     }
//--- Koordinaten eines rechteckigen Labels definieren
   int x=(int)x_distance/4;
   int y=(int)y_distance/4;
//--- Labelgröße setzen
   int width=(int)x_distance/4;
   int height=(int)y_distance/4;
//--- ein rechteckiges Label erstellen
   if(!RectLabelCreate(0,InpName,0,x,y,width,height,InpBackColor,InpBorder,InpCorner,
      InpColor,InpStyle,InpLineWidth,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- den Chart neu zeichnen und 1 Sekunde warten
   ChartRedraw();
   Sleep(1000);
//--- Größe des rechteckigen Labels ändern
   int steps=(int)MathMin(x_distance/4,y_distance/4);
   for(int i=0;i<steps;i++)
     {
      //--- Größe ändern
      width+=1;
      height+=1;
      if(!RectLabelChangeSize(0,InpName,width,height))
         return;
 //--- Überprüfen die Fakten von Zwangsabschaltung der Skript
      if(IsStopped())
         return;
      //--- Die Grafik neu zeichnen und 0,01 Sekunden warten
      ChartRedraw();
      Sleep(10);
     }
//--- 1 Sekunde Verzögerung
   Sleep(1000);
//--- Rahmentyp ändern
   if(!RectLabelChangeBorderType(0,InpName,BORDER_RAISED))
      return;
//--- den Chart neu zeichnen und 1 Sekunde warten
   ChartRedraw();
   Sleep(1000);
//--- Rahmentyp ändern
   if(!RectLabelChangeBorderType(0,InpName,BORDER_SUNKEN))
      return;
//--- den Chart neu zeichnen und 1 Sekunde warten
   ChartRedraw();
   Sleep(1000);
//--- das Schild löschen
   RectLabelDelete(0,InpName);
   ChartRedraw();
//--- 1 Sekunde warten
   Sleep(1000);
//---
  }