Die Ecke der Grafik, an den das Objekt gebunden ist  

Es gibt eine Reihe grafischer Objekte, für welche man die Ecke der Grafik angeben kann, hinsichtlich dessen die Koordinaten in Pixel angegeben werden. Dazu gehören die folgenden Objekt-Typen (in Klammern sind Identifikatoren des Objekt-Typs):

  • Label (OBJ_LABEL); Textzeichen
  • Button (OBJ_BUTTON); Button
  • Bitmap Label (OBJ_BITMAP_LABEL); Grafisches Zeichen
  • Edit (OBJ_EDIT); Eingabefeld
  • Rectangle Label (OBJ_RECTANGLE_LABEL). Winkelrechtes Zeichen

Objekt

Identifikator

X/Y

Width/Height

Date/Price

OBJPROP_CORNER

OBJPROP_ANCHOR

OBJPROP_ANGLE

Text

OBJ_TEXT

Ja

Ja

Ja

Label

OBJ_LABEL

Ja

Ja (read-only)

Ja

Ja

Ja

Button

OBJ_BUTTON

Ja

Ja

Ja

Bitmap

OBJ_BITMAP

Ja (read-only)

Ja

Ja

Bitmap Label

OBJ_BITMAP_LABEL

Ja

Ja (read-only)

Ja

Ja

Edit

OBJ_EDIT

Ja

Ja

Ja

Rectangle Label

OBJ_RECTANGLE_LABEL

Ja

Ja

Ja

In der Tabelle werden folgende Bezeichnungen verwendet:

  • X/Y – die Koordinaten des Bindepunkts werden in Pixel hinsichtlich einer der Ecken der Grafik angegeben;
  • Width/Height – Objekte haben Breite und Höhe. Wenn "read-only" angegeben ist, heißt das, dass die Höhe und die Breite erst nach dem Zeichnen des Objekts auf der Grafik berechnet werden;
  • Date/Price – das Paar Datum/Preis gibt die Koordinaten des Bindepunktes an;
  • OBJPROP_CORNER – gibt eine Ecke der Grafik an, in Hinsicht auf welche Koordinaten des Bindepunkts angegeben werden. Kann einen der vier Aufzählungswerte ENUM_BASE_CORNER annehmen;
  • OBJPROP_ANCHOR – gibt den Bindepunkt im Objekt selbst an und kann einen der 9 Aufzählungswerte ENUM_ANCHOR_POINT annehmen. Gerade von diesem Punkt werden Koordinaten in Pixel zur ausgewählten Ecke der Grafik angegeben;
  • OBJPROP_ANGLE – gibt den Drehungswinkel entgegen dem Uhrzeigersinn an.

Um den Chartwinkel anzugeben, von dem Koordinaten  X und Y in Pixel abgezählt werden, muss man die Funktion ObjectSetInteger(chartID, name, OBJPROP_CORNER, chart_corner) verwenden, wo:

  • chartID - Chartidentifikator;
  • name – Name des graphischen Objekts;
  • OBJPROP_CORNER – Identifikator der Eigenschaft für Festlegung des Snapwinkels;
  • chart_corner – der notwendiger Chartwinkel kann einen der Werte von Enumeration ENUM_BASE_CORNER annehmen.

ENUM_BASE_CORNER

Identifikator

Beschreibung

CORNER_LEFT_UPPER

Mittelpunkt der Koordinaten im oberen linken Winkel des Charts

CORNER_LEFT_LOWER

Mittelpunkt der Koordinaten im unteren linken Winkel des Charts

CORNER_RIGHT_LOWER

Mittelpunkt der Koordinaten im unteren rechten Winkel des Charts

CORNER_RIGHT_UPPER

Mittelpunkt der Koordinaten im oberen rechten Winkel des Charts

Beispiel:

void CreateLabel(long   chart_id,
                 string name,
                 int    chart_corner,
                 int    anchor_point,
                 string text_label,
                 int    x_ord,
                 int    y_ord)
  {
//---
   if(ObjectCreate(chart_id,name,OBJ_LABEL,0,0,0))
     {
      ObjectSetInteger(chart_id,name,OBJPROP_CORNER,chart_corner);
      ObjectSetInteger(chart_id,name,OBJPROP_ANCHOR,anchor_point);
      ObjectSetInteger(chart_id,name,OBJPROP_XDISTANCE,x_ord);
      ObjectSetInteger(chart_id,name,OBJPROP_YDISTANCE,y_ord);
      ObjectSetString(chart_id,name,OBJPROP_TEXT,text_label);
     }
   else
      Print("Erstellung des OBJ_LABEL-Objekts fehlgeschlagen",name,", Fehlercode = "GetLastError());
  }
//+------------------------------------------------------------------
//| Script program start function                                    |
//+------------------------------------------------------------------
void OnStart()
  {
//---
   int height=(int)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0);
   int width=(int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0);
   string arrows[4]={"LEFT_UPPER","RIGHT_UPPER","RIGHT_LOWER","LEFT_LOWER"};
   CreateLabel(0,arrows[0],CORNER_LEFT_UPPER,ANCHOR_LEFT_UPPER,arrows[0],50,50);
   CreateLabel(0,arrows[1],CORNER_RIGHT_UPPER,ANCHOR_RIGHT_UPPER,arrows[1],50,50);
   CreateLabel(0,arrows[2],CORNER_RIGHT_LOWER,ANCHOR_RIGHT_LOWER,arrows[2],50,50);
   CreateLabel(0,arrows[3],CORNER_LEFT_LOWER,ANCHOR_LEFT_LOWER,arrows[3],50,50);
  }