Galerie d'interfaces utilisateur écrites en MQL - page 66

 
Poursuivons avec une nouvelle page.
 

12. Obtention/réglage par programme des limites de valeur ducurseur et du champ avec boutons (_V_MIN, _V_MAX, _V_STEP, _DIGITS).

1. ouvrons une fenêtre contenant des éléments avec les paramètres ci-dessus :

int _OnInit()
  {
   //------------------------------------------------
   //Open the window "Settings example 1".
   //------------------------------------------------
   w_6_Settings_example_1();
   //------------------------------------------------


2. Écrivons les valeurs de _V_MIN, _V_MAX, _V_STEP, _DIGITS et affichons-les dans le journal :

   //------------------------------------------------
   //Get parameter properties, such as: 
   //_V_MIN, _V_MAX, _V_STEP, _DIGITS
   //------------------------------------------------
   int Min_value = w6_i_p3_H_SLIDER_Roll_the_value(get_i,p3_V_MIN);
   int Max_value = w6_i_p3_H_SLIDER_Roll_the_value(get_i,p3_V_MAX);
   int Step      = w6_i_p3_H_SLIDER_Roll_the_value(get_i,p3_V_STEP);
   int digits    = w6_i_p3_H_SLIDER_Roll_the_value(get_i,p3_DIGITS);
   //------------------------------------------------
   //Print the results:
   //------------------------------------------------
   Print("Min_value:  ",Min_value,"  Max_value:  ",Max_value,"  Step:  ",Step,"  digits:  ",digits);
   //------------------------------------------------

Résultat : les valeurs des propriétés des paramètres du curseur sont enregistrées.


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


3. Répétons l'opération avec le champ à boutons. Contrairement au curseur, le champ a d'autres limites numériques et son type de valeur est double.

   //------------------------------------------------
   //Get parameter properties, such as: 
   //_V_MIN, _V_MAX, _V_STEP, _DIGITS
   //------------------------------------------------
   double _Min_value  =  w6_d_p5_S_EDIT_Spin_the_value(get_d,p5_V_MIN);
   double _Max_value  =  w6_d_p5_S_EDIT_Spin_the_value(get_d,p5_V_MAX);
   double _Step       =  w6_d_p5_S_EDIT_Spin_the_value(get_d,p5_V_STEP);
   double _digits     =  w6_d_p5_S_EDIT_Spin_the_value(get_d,p5_DIGITS);
   //------------------------------------------------
   Print("Min_value:  ",_Min_value,"  Max_value:  ",_Max_value,"  Step:  ",_Step,"  digits:  ",_digits);
   //------------------------------------------------ 

Résultat : lesvaleurs des propriétés des paramètres du champ avec boutons sont affichées dans le journal.


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


4. Définir d'autres limites de la plage du curseur (testé pour la première fois, le résultat est inconnu).

   //------------------------------------------------
   //Set parameter properties, such as: 
   //_V_MIN, _V_MAX, _V_STEP.
   //------------------------------------------------
   Min_value = -100;
   Max_value = 100;
   Step      = 1;
   //-----------------
   w6_i_p3_H_SLIDER_Roll_the_value(Min_value, p3_V_MIN);
   w6_i_p3_H_SLIDER_Roll_the_value(Max_value, p3_V_MAX);
   w6_i_p3_H_SLIDER_Roll_the_value(Step,      p3_V_STEP);
   //------------------------------------------------

Résultat : *J'ai trouvé unproblème avec la plage des nombres négatifs (correction dans la prochaine version).




Vérifions avec des limites de plage positives :

   //------------------------------------------------
   //Set parameter properties, such as: 
   //_V_MIN, _V_MAX, _V_STEP.
   //------------------------------------------------
   Min_value = 0;
   Max_value = 1000;
   Step      = 1;
   //-----------------
   w6_i_p3_H_SLIDER_Roll_the_value(Min_value, p3_V_MIN);
   w6_i_p3_H_SLIDER_Roll_the_value(Max_value, p3_V_MAX);
   w6_i_p3_H_SLIDER_Roll_the_value(Step,      p3_V_STEP);
   //------------------------------------------------


Résultat : les bornes de la plage ont été modifiées avec succès.


Point principal : La portée du curseur peut être modifiée à l'aide de sa fonction.

**Important :il n'est pas possible de modifier rétroactivement le type de valeur du paramètre de int à double ou vice versa.

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


Réalisons une expérience similaire avec le champ de saisie :

   //------------------------------------------------
   //Set NEW parameter properties, such as: 
   //_V_MIN, _V_MAX, _V_STEP, _DIGITS
   //------------------------------------------------
   double _Min_value  = -100.0;
   double _Max_value  =  100.0;
   double _Step       =  2.5;
   //-----------------
   //Set another default value---
   w6_d_p5_S_EDIT_Spin_the_value(50.5);
   //-----------------
   w6_d_p5_S_EDIT_Spin_the_value(_Min_value,p5_V_MIN);
   w6_d_p5_S_EDIT_Spin_the_value(_Max_value,p5_V_MAX);
   w6_d_p5_S_EDIT_Spin_the_value(_Step     ,p5_V_STEP);
   //------------------------------------------------

Résultat : tout fonctionne comme prévu. Le champ avec les boutons accepte la plage et le pas spécifiés. Si la plage est dépassée, une erreur est signalée dans le journal.

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


5. Enfin, définissons la valeur_DIGITS pour le champ avec boutons (le curseur ne fonctionnera pas car son type de paramètre est int) :

  • Définissons la valeur du pas avec quatre chiffres après le point.
  • La variable digits est fixée à 4 (quatre décimales).

       //------------------------------------------------
       //Set parameter properties, such as: 
       //_V_MIN, _V_MAX, _V_STEP, _DIGITS
       //------------------------------------------------
       double _Min_value  = -100.0;
       double _Max_value  =  100.0;
       double _Step       =  2.5567;
              digits      =  4;
       //-----------------
       //Set another default value---
       w6_d_p5_S_EDIT_Spin_the_value(50.5);
       //-----------------
       w6_d_p5_S_EDIT_Spin_the_value(_Min_value,p5_V_MIN);
       w6_d_p5_S_EDIT_Spin_the_value(_Max_value,p5_V_MAX);
       w6_d_p5_S_EDIT_Spin_the_value(_Step     ,p5_V_STEP);
     
       //Set the new number of digits:
       w6_d_p5_S_EDIT_Spin_the_value(digits    ,p5_DIGITS);
       //------------------------------------------------


    Résultat :

    • Au début, il y avait trois chiffres après la virgule (le nombre original avant la modification du logiciel).


    • Ensuite, l'appel au logiciel a augmenté la précision à quatre chiffres :


    • Ensuite, à 7 chiffres :
    //Setting 7 digits after the decimal point:
    
    w6_d_p5_S_EDIT_Spin_the_value(7,p5_DIGITS);



    Résultats :

    • Il est possible de réinitialiser par programme les limites de la plage de nombres d'origine du champ du bouton ainsi que du curseur.
    • Il est possible de modifier par programme la précision initiale de la valeur double en définissant un nombre différent de décimales.
    • Le curseur présente un problème de calcul des valeurs dans les limites des nombres négatifs (ce problème sera résolu).
    • Le type original du paramètre de l'élément ne peut pas être réinitialisé.

    Ceci conclut ce sujet.

    Графические интерфейсы VI: Элементы "Слайдер" и "Двухсторонний слайдер" (Глава 2)
    Графические интерфейсы VI: Элементы "Слайдер" и "Двухсторонний слайдер" (Глава 2)
    • www.mql5.com
    В предыдущей статье разрабатываемая библиотека была пополнена сразу четырьмя довольно часто используемыми в графических интерфейсах элементами управления: «чекбокс», «поле ввода», «поле ввода с чекбоксом» и «комбобокс с чекбоксом». Вторая глава шестой части серии будет посвящена таким элементам управления, как слайдер и двухсторонний слайдер.