//--- 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);
//---
}
|