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

 
Commençons par une nouvelle page.
 

9. Renvoie la valeur précédente de _V_LAST .

La valeur précédente de tous les paramètres est sauvegardée automatiquement. Pour l'obtenir, il faut appeler la fonction element et lui passer l'identifiant _V_LAST.

Voyons comment procéder sur un exemple pratique:

1. ouvrez la fenêtre souhaitée :

   //------------------------------------------------
   //Open the window "Settings example 2".

   w_7_Settings_example_2();
   //------------------------------------------------



2. Envoyer une valeur (chaîne de caractères) dans le champ de saisie supérieur. 3 :

   //------------------------------------------------
   //Set up the first string in the textbox:

   w7_s_p4_EDIT_Comment_1("1, 2, 3, 4, 5");
   //------------------------------------------------



3. envoyez maintenant une autre chaîne de caractères dans le même champ :

   //------------------------------------------------
   //Right after, reset it by the new string:

   w7_s_p4_EDIT_Comment_1("A, B, C, D, E");
   //------------------------------------------------



4. Nous récupérons la chaîne précédente :

   //------------------------------------------------
   //Get back the first value:

   string The_first_value = w7_s_p4_EDIT_Comment_1(get_s,p4_V_LAST);
   //------------------------------------------------


5. Et nous l'envoyons dans le champ inférieur :

   //------------------------------------------------
   //And send it into the textbox below:

   w7_s_p4_EDIT_Comment_2(The_first_value);
   //------------------------------------------------


6. Réécrivons à nouveau la ligne du champ supérieur :

   //------------------------------------------------
   //Reset the value again:

   w7_s_p4_EDIT_Comment_1("A1, B2, C3, D4, E5");
   //------------------------------------------------


7. Envoyons la chaîne précédente dans le champ inférieur :

   //------------------------------------------------
   //And get the the previous value back:

   string The_second_value = w7_s_p4_EDIT_Comment_1(get_s,p4_V_LAST);
   //------------------------------------------------
   
   //------------------------------------------------
   //Send it into the third textbox:

   w7_s_p4_EDIT_Comment_3(The_second_value);
   //------------------------------------------------



Résultat :

  • Le champ supérieur contient la chaîne actuelle.
  • Dans le champ du milieu - la chaîne originale.
  • Dans le champ du bas - la deuxième chaîne.

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

La même approche fonctionne dans tous les cas.

En utilisant l'identifiant _V_LAST , vous pouvez obtenir la dernière valeur de n'importe quel élément (si l'identifiant est prescrit dans la liste des propriétés individuelles).




Envisagez ensuite de définir des états ON/OFF et de verrouiller des éléments.

 
Реter Konow #:
La même approche fonctionne dans tous les cas.

Cela inclut-il également l'état ON/OFF ?

 
hini #:

Comprend-il également un état ON/OFF ?

_V_LAST renvoie la dernière valeur de paramètre d'un élément.

Vous pouvez utiliser l'approche décrite ci-dessus pour d'autres éléments. Je montrerai l'exemple d'un curseur et d'un champ avec des boutons après avoir abordé la question de la commutation des états des éléments.

En ce qui concerne la synchronisation, un champ renverra la valeur actuelle du curseur et l'autre la valeur précédente.

 

10.définir les étatsON, OFF, LOCK_ON, LOCK_OFF, LOCK, UNLOCKpour différents éléments:

Certains éléments ont des étatsON et OFF, l' exemple classique étant les boutons et les cases à cocher. Cependant, de nombreux éléments sont toujours dans un état neutre. Toujourséteints. Qu'ont-ils en commun avec les boutons et les cases à cocher ? Tous deux peuvent êtreverrouillés et déverrouillés. La différence réside dans le fait que les boutons et les cases à cocher sont verrouillés dans deux états - activé et désactivé- alors que les autres éléments sont uniquement dans un étatneutre. En raison de ces différences, il existe plusieurs identificateurs qui remplissent la même fonction : ils verrouillent et déverrouillent les éléments.

Prenons quelques exemples pratiques :

1. ouvrons la fenêtre des paramètres avec des boutons et des cases à cocher :

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



2. Définissons l'état activé du bouton :

   //------------------------------------------------
   //Set the button "Start" ON:

   w6_i_p1_BUTTON_Start(p1_ON);
   //------------------------------------------------

Résultat : le bouton est passé à l'état enfoncé.


3) Définissons maintenant l'étatON pour les cases à cocher :

   //------------------------------------------------
   //Set the checkboxes ON:

   w6_i_p7_CHECKBOX_Set_an_option(p7_ON);
   w6_i_p7_CHECKBOX_Set_another_option(p7_ON);
   w6_i_p7_CHECKBOX_And_another_option(p7_ON);
   //------------------------------------------------

Résultat : les cases à cocher sont passées à l'état activé.

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


4) Supprimons maintenant l'état ON du bouton "Start" à l'aide de l'identificateurOFF:

   //------------------------------------------------
   //Set the button "Start" OFF:

   w6_i_p1_BUTTON_Start(p1_OFF);
   //------------------------------------------------

Résultat : le bouton est revenu à l'état neutre.


5. Rendons l'état neutreOFF aux cases à cocher :

   //------------------------------------------------
   //Set the checkboxes OFF:
 
   w6_i_p7_CHECKBOX_Set_an_option(p7_OFF);
   w6_i_p7_CHECKBOX_Set_another_option(p7_OFF);
   w6_i_p7_CHECKBOX_And_another_option(p7_OFF);
   //------------------------------------------------

Résultat : les cases à cocher sont revenues à l'état neutre.


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


Passons maintenant au verrouillage du bouton et des cases à cocher dans deux états possibles : neutre et activé :


1. Verrouillons le bouton à l'état neutre :

   //------------------------------------------------
   //Lock the button "Start" in the state OFF:

   w6_i_p1_BUTTON_Start(p1_LOCK_OFF);
   //------------------------------------------------

Résultat : bouton verrouillé à l'état neutre.

(*défaut, la correction sera faite.).


2. Verrouillons les cases à cocher à l'état neutre :

   //------------------------------------------------
   //Lock the checkboxes in the state OFF:

   w6_i_p7_CHECKBOX_Set_an_option(p7_LOCK_OFF);
   w6_i_p7_CHECKBOX_Set_another_option(p7_LOCK_OFF);
   w6_i_p7_CHECKBOX_And_another_option(p7_LOCK_OFF);
   //------------------------------------------------

Résultat : les cases à cocher sont verrouillées à l'état neutre.


(*le problème de la disparition du texte à l'état verrouillé pour certains éléments sera résolu dans la prochaine version).


3. Verrouillez le bouton et les cases à cocher à l'état enfoncé à l'aide de l'identificateurLOCK_ON :

   //------------------------------------------------
   //Lock the button "Start" in the state ON:

   w6_i_p1_BUTTON_Start(p1_LOCK_ON);
   //------------------------------------------------
   //------------------------------------------------
   //Lock the checkboxes in the state ON:

   w6_i_p7_CHECKBOX_Set_an_option(p7_LOCK_ON);
   w6_i_p7_CHECKBOX_Set_another_option(p7_LOCK_ON);
   w6_i_p7_CHECKBOX_And_another_option(p7_LOCK_ON);
   //------------------------------------------------

Résultat : le bouton et les cases à cocher sont verrouillés à l'état enfoncé.



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

Testons maintenant les commandesLOCK et UNLOCK pour les éléments qui sont toujours à l'état neutre.

Prenons par exemple les élémentsC_LIST, D_LIST, H_SLIDER et S_EDIT dans la même fenêtre :



1. Verrouillons les quatre éléments en même temps :

   //------------------------------------------------
   //Lock the elements:

   w6_s_p6_C_LIST_C_LIST_1(p6_LOCK);
   w6_s_p6_D_LIST_D_LIST_1(p6_LOCK);
   w6_i_p3_H_SLIDER_Roll_the_value(p3_LOCK);
   w6_d_p5_S_EDIT_Spin_the_value(p5_LOCK);
   //------------------------------------------------

Résultat : les éléments C_LIST, D_LIST, H_SLIDER et S_EDIT sont verrouillés .


2. Déverrouillons les éléments :

   //------------------------------------------------
   //Unlock the elements:

   w6_s_p6_C_LIST_C_LIST_1(p6_UNLOCK);
   w6_s_p6_D_LIST_D_LIST_1(p6_UNLOCK);
   w6_i_p3_H_SLIDER_Roll_the_value(p3_UNLOCK);
   w6_d_p5_S_EDIT_Spin_the_value(p5_UNLOCK);
   //------------------------------------------------

Résultat : les éléments ont été déverrouillés.

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

Avec ces exemples, nous concluons ce sujet, car les autres éléments sont verrouillés et déverrouillés de la même manière.

...

Nous passons ensuite à la synchronisation des valeurs des paramètres.

 
Très bien, très pratique.
 
hini #:
Très bien, très pratique.

Je vous remercie ! L'évaluation des utilisateurs est très importante pour le développement futur.

 
Après avoir évalué la quantité de matériel pour le prochain sujet, je pense qu'il serait préférable de le reporter à demain afin que les sujets précédents soient mieux mémorisés.
 

Signes d'une bonne interface graphique.

Minimalisme : espace minimum occupé sur les graphiques, absence d'éléments insignifiants et d'informations qui détournent l'attention.

Fonctionnalité : tout l'espace occupé doit être aussi utile que possible, toutes les fonctions doivent être intuitives.

Ergonomie : les éléments les plus fréquemment utilisés doivent être accessibles et de grande taille.

Esthétique : alignement, tailles standard, style uniforme, palette de couleurs.

 
Ivan Titov #:

Signes d'une bonne interface graphique.

Minimalisme : espace minimal occupé sur les graphiques, absence d'éléments et d'informations insignifiants qui détournent l'attention.

Fonctionnalité : tout l'espace occupé doit être aussi utile que possible, toutes les fonctions doivent être intuitives.

Ergonomie : les éléments les plus fréquemment utilisés doivent être accessibles et de grande taille.

Esthétique : alignement, dimensions standard, style uniforme, palette de couleurs.


Merci de nous avoir montré l'exemple. Je suis tout à fait d'accord avec vos thèses. J'espère atteindre un jour ce niveau de développement.