//--- Beschreibung
#property description "Das Skript erstellt Objekt \"Bitmap Label\"."
//--- Zeigen den Fenster von Eingabeparametern in der Skript-Startup
#property script_show_inputs
//--- Eingangsparameter von Skript
input string InpName="BmpLabel"; // Name von Label
input string InpFileOn="\\Images\\dollar.bmp"; // Der Dateiname für Modus On
input string InpFileOff="\\Images\\euro.bmp"; // Der Dateiname für Modus Off
input bool InpState=false; // Label gedrückt/ungedrückt
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER; // Der Winkel des Charts für Bindung
input ENUM_ANCHOR_POINT InpAnchor=ANCHOR_CENTER; // Bezugsmethode
input color InpColor=clrRed; // Farbe des Rahmens bei der Markierung
input ENUM_LINE_STYLE InpStyle=STYLE_SOLID; // Linienstil bei der Markierung
input int InpPointWidth=1; // Größe des Punktes zu bewegen
input bool InpBack=false; // Objekt im Hintergrund
input bool InpSelection=false; // Wählen zu bewegen
input bool InpHidden=true; // Ausgeblendet in der Liste der Objekten
input long InpZOrder=0; // Priorität auf Mausklick
//+------------------------------------------------------------------+
//| Erstellt das Objekt "Bitmap Label" |
//+------------------------------------------------------------------+
bool BitmapLabelCreate(const long chart_ID=0, // ID des Charts
const string name="BmpLabel", // Name des Objekts
const int sub_window=0, // Nummer des Unterfensters
const int x=0, // X-Koordinate
const int y=0, // Y-Koordinate
const string file_on="", // Bild im Modus On
const string file_off="", // Bild im Modus Off
const int width=0, // X-Koordinate des Rahmens
const int height=0, // Y-Koordinate des Rahmens
const int x_offset=10, // X-Offset des Rahmens
const int y_offset=10, // Y-Offset des Rahmens
const bool state=false, // gedruckt/ungedruckt
const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // Ecke des Charts zu binden
const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // Bindungsmethode
const color clr=clrRed, // Rahmenfarbe bei der Markerung
const ENUM_LINE_STYLE style=STYLE_SOLID, // Linienstil bei der Markierung
const int point_width=1, // Größe des Punktes
const bool back=false, // Im Hintergrund
const bool selection=false, // Markieren zu bewegen
const bool hidden=true, // Ausgeblendet in der Liste der Objekten
const long z_order=0) // Priorität für Mausklick
{
//--- Setzen den Wert des Fehlers zurück
ResetLastError();
//--- Bitmap Label erstellen
if(!ObjectCreate(chart_ID,name,OBJ_BITMAP_LABEL,sub_window,0,0))
{
Print(__FUNCTION__,
": Objekt \"Bitmap Label\" konnte nicht erstellt werden! Fehlercode = ",GetLastError());
return(false);
}
//--- Wählen Bilder für Modi On und Off
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,0,file_on))
{
Print(__FUNCTION__,
": Bild für Modus On konnte nicht erstellt werden! Fehlercode = ",GetLastError());
return(false);
}
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,1,file_off))
{
Print(__FUNCTION__,
": Bild für Modus Off 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);
//--- Bildrahmen eingebenö wenn die Werte von Breite oder Höhe
//--- größer als die Breite und Höhe des ursprünglichen Bildes sind, dann
//--- wird es nicht gezeichnet; wenn die Werte von Breite und Höhe sind kleiner als die Bildgröße,
//--- dann sein Teil, der diesen Größen entspricht, gezeichnet wird
ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- setzen den Teil des Bildes, der in den Rahmen angezeigt werden soll
//--- Standardmäßig ist es der linke obere Bereich des Bildes; durch den Wert
//--- kann es von diesem Bild bewegt werden
ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset);
ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset);
//--- Zustand von Label (gedrückt oder nicht)
ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- wählen die Ecke des Charts, relativ zu der die Punktkoordinaten eingegeben werden
ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- die Bindungsmethode setzen
ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- Farbe des Rahmens bei der Markierung des Objektes
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- Linienstil des Rahmens bei der Markierung des Objektes
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- die Größe des Punktes, den benutzt werden kann, um ein Objekt zu bewegen
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_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);
}
//+------------------------------------------------------------------+
//| Ein neues Bild für "Bitmap Label" setzen |
//+------------------------------------------------------------------+
bool BitmapLabelSetImage(const long chart_ID=0, // ID des Charts
const string name="BmpLabel", // Name des Objekts
const int on_off=0, // Modifier (On oder Off)
const string file="") // Pfad zur Datei
{
//--- Setzen den Wert des Fehlers zurück
ResetLastError();
//--- Pfad zur Datei mit dem Bild setzen
if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,on_off,file))
{
Print(__FUNCTION__,
": Bild konnte nicht geladen werden! Fehlercode = ",GetLastError());
return(false);
}
//--- die erfolgreiche Umsetzung
return(true);
}
//+------------------------------------------------------------------+
//| Verschiebt das Objekt "Bitmap Label" |
//+------------------------------------------------------------------+
bool BitmapLabelMove(const long chart_ID=0, // ID des Charts
const string name="BmpLabel", // Name des Labels
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 Rahmen des Objekts (Objektgröße) |
//+------------------------------------------------------------------+
bool BitmapLabelChangeSize(const long chart_ID=0, // ID des Charts
const string name="BmpLabel", // Name des Labels
const int width=0, // Breite von Label
const int height=0) // Höhe von Label
{
//--- 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 die Koordinate der oberen linken Ecke von Bildrahmen |
//+------------------------------------------------------------------+
bool BitmapLabelMoveVisibleArea(const long chart_ID=0, // ID des Charts
const string name="BmpLabel", // Name des Objekts
const int x_offset=0, // X-Koordinate des Rahmens
const int y_offset=0) // Y-Koordinate des Rahmens
{
//--- Setzen den Wert des Fehlers zurück
ResetLastError();
//--- Koordinaten des Objektrahmens ändern
if(!ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset))
{
Print(__FUNCTION__,
": X-Koordinate des Objektrahmens konnte nicht geändert werden! Fehlercode = ",GetLastError());
return(false);
;}
if(!ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset))
{
Print(__FUNCTION__,
": Y-Koordinate des Objektrahmens konnte nicht geändert werden! Fehlercode = ",GetLastError());
return(false);
}
//--- die erfolgreiche Umsetzung
return(true);
}
//+------------------------------------------------------------------+
//| Löscht das Objekt "Bitmap Label" |
//+------------------------------------------------------------------+
bool BitmapLabelDelete(const long chart_ID=0, // ID des Charts
const string name="BmpLabel") // Name des Objekts
{
//--- Setzen den Wert des Fehlers zurück
ResetLastError();
//--- das Schild löschen
if(!ObjectDelete(chart_ID,name))
{
Print(__FUNCTION__,
": Objekt \"Bitmap 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;
}
//--- Die Koordinaten des Objekts definieren
int x=(int)x_distance/2;
int y=(int)y_distance/2;
//--- Objektgröße und Koordinate des Rahmens setzen
int width=32;
int height=32;
int x_offset=0;
int y_offset=0;
//--- Bitmap Label auf der Mitte des Fensters platzieren
if(!BitmapLabelCreate(0,InpName,0,x,y,InpFileOn,InpFileOff,width,height,x_offset,y_offset,InpState,
InpCorner,InpAnchor,InpColor,InpStyle,InpPointWidth,InpBack,InpSelection,InpHidden,InpZOrder))
{
return;
}
//--- den Chart neu zeichnen und 1 Sekunde warten
ChartRedraw();
Sleep(1000);
//--- Größe des Objektrahmens im Loop ändern
for(int i=0;i<6;i++)
{
//--- Größe des Objektrahmens ändern
width--;
height--;
if(!BitmapLabelChangeSize(0,InpName,width,height))
return;
//--- Überprüfen die Fakten von Zwangsabschaltung der Skript
if(IsStopped())
return;
//--- den Chart neu zeichnen
ChartRedraw();
// Verzögerung 0.3 Sekunden
Sleep(300);
}
//--- 1 Sekunde Verzögerung
Sleep(1000);
//--- Koordinaten des Objektrahmens im Loop ändern
for(int i=0;i<2;i++)
{
//--- Koordinaten des Objektrahmens ändern
x_offset++;
y_offset++;
if(!BitmapLabelMoveVisibleArea(0,InpName,x_offset,y_offset))
return;
//--- Überprüfen die Fakten von Zwangsabschaltung der Skript
if(IsStopped())
return;
//--- den Chart neu zeichnen
ChartRedraw();
// Verzögerung 0.3 Sekunden
Sleep(300);
}
//--- 1 Sekunde Verzögerung
Sleep(1000);
//--- das Schild löschen
BitmapLabelDelete(0,InpName);
ChartRedraw();
//--- 1 Sekunde Verzögerung
Sleep(1000);
//---
}
|