Galerie der in MQL geschriebenen UIs - Seite 63

 

Ich kann es noch einfacher machen:

w7_s_p4_EDIT_Comment_2((string)w6_d_p5_S_EDIT_Spin_the_value());
 

Theoretisch könnte man es so machen:

w7_s_p4_EDIT_Comment_2(w6_d_p5_S_EDIT_Spin_the_value());

Der Compiler selbst wandelt double in string um, aber ich würde das nicht empfehlen.

 
Реter Konow #:

Ich verstehe die Frage nicht wirklich, daher ist meine Antwort vielleicht nicht ganz themengerecht.

Sie können es so machen:


Die Funktion double gibt eine Variable vom Typ string zurück, indem sie im Schritt value return eine Konvertierung erzwingt.
Innerhalb der Funktion w7_s_p4_EDIT_Comment_2 konvertieren Sie dann den Typ
double Spin_edit_value = 22.5;

w7_s_p4_EDIT_Comment_2(Spin_edit_value);
 
Реter Konow #:

Theoretisch wäre dies möglich:

Der Compiler selbst wandelt double in string um, aber ich empfehle es nicht.

Kann die Funktion w7_s_p4_EDIT_Comment_2 nicht eine entsprechende überladene Version erzeugen, die den Typ double erhält?

 

Fortsetzung des Themas der Einstellung von Eigenschaften und der Rückgabe und Weiterleitung von Werten zwischen Elementen.


Wir haben uns mehrere Optionen angeschaut:

1. Setzen von Text in einem Texteingabefeld.

w7_s_p4_EDIT_Comment_1("Some random text");

2. Dem Schieberegler einen neuen Wert zuweisen.

w6_i_p3_H_SLIDER_Roll_the_value(33);

3. Wählen Sie eine beliebige Zahl für das Eingabefeld mit Schaltflächen.

w6_d_p5_S_EDIT_Spin_the_value(423.11);

4. Mehrere Textstrings an die Zellen in der Kontoinfotabelle gesendet.

w8_s_p4_CELL_Account_name__Value("MyRealAccount");  

w8_s_p4_CELL_Account_number__Value("A001234647843B1");

w8_s_p4_CELL_Account_server__Value("MyServer");

w8_s_p4_CELL_Account_currency__Value("US Dollar");

w8_s_p4_CELL_Leverage__Value("1:1");

w8_s_p4_CELL_Account_balance__Value("1234567.23 $");


5. Schließlich haben wir den neuen Wert des S_EDIT-Elements zurückgegeben und an zwei verschiedene Fenster gesendet: die Zelle in der Kontoinformationstabelle und das Texteingabefeld im Fenster Einstellungen Beispiel 2.

 double Spin_edit_value = w6_d_p5_S_EDIT_Spin_the_value();//Делаем возврат значения параметра (тип double).
w8_s_p4_CELL_Account_profit__Value((string)Spin_edit_value);//При пересылке значение double приводим к типу string. Функция ячейки имеет тип string.
w7_s_p4_EDIT_Comment_2((string)Spin_edit_value);

//---------------------------------------------------------------------------------------------------


Um dieses Thema abzuschließen und zum nächsten überzugehen, müssen wir noch ein paar Dinge tun:

1. Die Farbe des Schiebereglers ändern.

2. Ändern Sie die Farbe der S_EDIT-Basis und des Textes.

3. Ändern Sie die Farben der Schaltfläche im gedrückten und nicht gedrückten Zustand.

4. Prüfen Sie das Senden von Werten an Elemente bei Timer-Ereignissen.

//---------------------------------------------------------------------------------------------------


1. Ändern Sie die Farbe des Schiebereglers:

   //To get slider's bar color:
   uint Sliders_bar_color = (uint)w6_i_p3_H_SLIDER_Roll_the_value(get_i, p3_COLOR_bar);
   
   //Print the returned value:
   Print("Sliders_bar_color =  ",Sliders_bar_color);

Ergebnis:



Weisen Sie dem Schieberegler eine andere Farbe zu:

   //To set slider's bar color:
   w6_i_p3_H_SLIDER_Roll_the_value((uint)clrRed, p3_COLOR_bar);


Ergebnis:

//---------------------------------------------------------------------------------------------------


2. Ändern Sie die Farbe des Textes und der Basis des S_EDIT-Elements:

Ermitteln wir die ursprüngliche Farbe der Basis des Eingabefeldes mit Schaltflächen:

   //To get spin edit's base color:
   uint Spin_edit_base_color = (uint)w6_d_p5_S_EDIT_Spin_the_value(get_d, p5_COLOR_base);

Geben Sie sie in das Protokoll aus:

   //Print the returned value:
   Print("Spin_edit_base_color = ",Spin_edit_base_color);


Weisen Sie dem Sockel des Feldes eine andere Farbe zu:

   //To set spin edit's base color:
   w6_d_p5_S_EDIT_Spin_the_value((uint)clrLightGreen, p5_COLOR_base);

Ergebnis:


Einstellen der Textfarbe des S_EDIT-Feldes (Das Eigenschaftspräfix p4 wird anstelle von p5 verwendet, da ich vergessen habe, die Textfarbeigenschaft für S_EDIT hinzuzufügen. der Fehler wird in der nächsten Version behoben).

   //To set spin edit's text color:
   w6_d_p5_S_EDIT_Spin_the_value((uint)clrBrown, p4_COLOR_text);  


//---------------------------------------------------------------------------------------------------


3. Ändern Sie die Farben der Schaltfläche im gedrückten und nicht gedrückten Zustand:

Ändern Sie die Farbe der Schaltfläche im neutralen Zustand:

w6_i_p1_BUTTON_Start((uint)C'255,166,0',p1_N_COLOR_base);


Legen Sie eine andere Farbe für den aktivierten Zustand der Schaltfläche fest:

w6_i_p1_BUTTON_Start((uint)C'166,255,0',p1_A_COLOR_base);


Sie können auch die Textfarbe der Schaltfläche für den neutralen und den gedrückten Zustand ändern, aber bei einer kleinen Schrift ist dies nicht erkennbar. Deshalb wählen wir ein anderes Fenster:

   //Set text color for button's neutral state:

   //Button 1:
   w14_i_p1_BUTTON_BUY_OFF((uint)C'240,70,10',p1_N_COLOR_text);

   //Button 2:
   w14_i_p1_BUTTON_SELL_OFF((uint)C'240,70,10',p1_N_COLOR_text); 

Ergebnis:


   //Set text color for button's active state:
   
  //Button 1
   w14_i_p1_BUTTON_BUY_OFF((uint)C'105,240,50',p1_A_COLOR_text);

  //Button 2
   w14_i_p1_BUTTON_SELL_OFF((uint)C'105,240,50',p1_A_COLOR_text);

Ergebnis:


//---------------------------------------------------------------------------------------------------


4. Prüfen Sie das Senden von Werten an Elemente bei einem Timer-Ereignis:

void _OnTimer()
  {
   string Microseconds = (string)GetMicrosecondCount();
     
   //Send Microseconds to each cell-----------------
   w8_s_p4_CELL_Account_name__Value(Microseconds);
   w8_s_p4_CELL_Account_number__Value(Microseconds);
   w8_s_p4_CELL_Account_server__Value(Microseconds);
   w8_s_p4_CELL_Account_currency__Value(Microseconds);
   w8_s_p4_CELL_Leverage__Value(Microseconds);
   w8_s_p4_CELL_Account_balance__Value(Microseconds);
   w8_s_p4_CELL_Account_profit__Value(Microseconds);
   w8_s_p4_CELL_Account_equity__Value(Microseconds);
   w8_s_p4_CELL_Account_free_margin__Value(Microseconds);
   w8_s_p4_CELL_Account_margin__Value(Microseconds);
   w8_s_p4_CELL_Account_stop_out_level__Value(Microseconds);

Ergebnis:


//------------------------------------------------------------------------------------------------

Damit ist dieses Thema abgeschlossen.


Als nächstes gehen wir zu den Themen über:

9. Rückgabe des letzten Wertes (_V_LAST). Wann und für welche Fälle wird der letzte Wert benötigt (nicht zu verwechseln mit dem aktuellen Wert).

10. Test der Einstellung der Zustände ON/OFF/LOCK_ON/LOCK_OFF/LOCK/UNLOCK für verschiedene Arten von Elementen.

 
hini #:

Innerhalb der Funktion w7_s_p4_EDIT_Comment_2, dann konvertieren Sie den Typ

Das können Sie. Aber es wird eine zusätzliche Warnung ausgegeben, da es sich um eine implizite Typkonvertierung handelt. Technisch gesehen, können Sie einfach eine Zahl senden. Ohne eine Variable. Ich überlasse es dem Ermessen eines jeden.

 
hini #:

Innerhalb der Funktion w7_s_p4_EDIT_Comment_2 konvertieren Sie dann den Typ

Innerhalb der Funktion w7_s_p4_EDIT_Comment_2 befindet sich nichts. Sie ist ein Wrapper, der die zentrale Funktion aufruft. Und die Wrapper-Funktion kann nur einen Wert ihres eigenen Typs zurückgeben.



h ini #: Kann die Funktion w7_s_p4_EDIT_Comment_2 nicht eine entsprechende überladene Version erzeugen, die den Typ double annimmt?

Leider kann sie das nicht, weil sie ein Wrapper ist. Es hat keinen Sinn, sie zu verkomplizieren. Die ganze Arbeit wird von den zentralen Funktionen erledigt.
 
Реter Konow #:

Die Funktion w7_s_p4_EDIT_Comment_2 hat keinen Inhalt . Sie ist nur ein Wrapper, der eine zentrale Funktion aufruft. Wrapper-Funktionen können nur Werte ihres eigenen Typs zurückgeben.


Das kann sie nicht, weil sie eine Verschalung ist. Es gibt keinen Grund, sie zu verkomplizieren. Die ganze Arbeit wird von der zentralen Funktion erledigt.

Richtig.

 

Heute wollen wir uns mit vier Themen befassen:

9. Rückgabe des vorherigen _V_LAST-Wertes.

10. Einstellung der Zustände ON/OFF/LOCK_ON/LOCK_OFF/LOCK/UNLOCK für verschiedene Arten von Elementen.

11. Synchronisierung von Parameteränderungen: z.B. Eingabefeld mit Schaltflächen und Schieberegler. Das Ziel ist, dass sich bei einer Änderung des ersten Wertes auch der zweite Wert entsprechend ändert. Wir wollen die Kommunikation zuerst in einem Fenster und dann zwischen den Fenstern einrichten.

12. Setzen Sie die Bereichsgrenzen des Schiebereglers und des Feldes mit Schaltflächen programmatisch zurück.

//---------------------------------------------------------------------------------------------------------

Bisher haben wir die folgenden Themen behandelt:

1. die Orientierung in der Liste von intellisense und die Auswahl der Funktion des gewünschten Fensters.

2. Software zum Öffnen und Schließen von Fenstern.

3. die Orientierung in der Liste von intellisense und die Auswahl des gewünschten Elements im gewünschten Fenster.

4. Navigation durch die Listen der einzelnen Elementeigenschaften.

5. Parsing des Namens eines Elements und der Fenster-Wrapper-Funktion.

6. Rückgabe des Parameterwertes eines ausgewählten Elementes an eine Variable seines Typs. Betrachtung von drei Typen mehrerer verschiedener Elemente.

7. Setzen von Werten in den Parametern verschiedener Typen von Elementen. Schauen wir uns an, wie die Werte in den Oberflächenfenstern dieser Elemente erscheinen werden.

8. Rückgabe der Parameterwerte eines Elements, Änderung und Weiterleitung dieses Werts an ein anderes Element. Betrachten Sie verschiedene Arten von Elementen und Werten, und testen Sie die Weiterleitung zwischen verschiedenen Arten von Elementen in verschiedenen Fenstern.

9. Rückgabe des letzten Wertes (_V_LAST). Wann und für welche Fälle wird der letzte Wert benötigt (nicht zu verwechseln mit dem aktuellen Wert).

10. Testen Sie die Einstellung der Zustände ON/OFF/LOCK_ON/LOCK_OFF/LOCK/UNLOCK für verschiedene Arten von Elementen.

11. Versuchen Sie, die Änderungen der Werte von Elementen verschiedener Typen zu verknüpfen und zu synchronisieren: z.B. Eingabefeld mit Schaltflächen und Schieberegler. Nehmen wir an, dass, wenn sich der Wert eines Elements (manuell oder Software) ändert, sich der Wert im zweiten Element entsprechend ändert.

12. Versuchen wir, die Bereichsgrenzen des Schiebereglers und des Eingabefeldes mit Schaltflächen über Wrapper-Funktionen programmatisch zurückzusetzen. Ich hatte noch keine Zeit, das zu testen, aber etwas deutet darauf hin, dass es funktionieren wird. Wie auch immer, schauen wir mal.

13. Versuchen wir, Elementzustände über Wrapper-Funktionen zurückzugeben. Das ist in der Funktionalität enthalten, aber ich hatte noch keine Zeit, es zu testen. Wir werden also sehen... Das Ergebnis ist unbekannt.

14. Lassen Sie uns die Farben für Text und Elementbasen abrufen und setzen. Wir können versuchen, diese Farben mit einigen einfachen Ereignissen oder Wertgrenzen zu verknüpfen.

15. Ich erzähle Ihnen mehr darüber, wie Sie den Ausdruck der neuen API-Datei navigieren und lesen können.

 
Beginnen wir auf einer neuen Seite.