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

 
Реter Konow #:
Définir l'étatON, OFF, LOCK_ON, LOCK_OFF, LOCK, UNLOCK pour différents éléments

Comment obtenir l'état activé/désactivé d'un bouton ?

 
hini #:

Comment obtenir l'état activé/désactivé d'un bouton ?

C'est le sujet suivant. Nous l'examinerons aujourd'hui.

Je dois ajouter que les éléments de cette interface graphique sont dessinés, de sorte que la méthode standard d'obtention de l'état ObjectGetInteger(0, "button1", OBJPROP_STATE) ; ne fonctionnera pas.

Permettez-moi également de vous rappeler que les événements des éléments, y compris les boutons, sont envoyés au fichier API.

 

Une liste générale de sujets à prendre en considération :

1. l'orientation dans la liste d'intellisense et la sélection de la fonction de la bonne fenêtre.

2. Ouverture et fermeture programmées des fenêtres.

3. l'orientation dans la liste d'intellisense et la sélection du bon élément dans la bonne fenêtre

4. naviguer dans des listes de propriétés d'éléments individuels.

5. Analyse du nom d'un élément et d'une fonction d'enveloppe de fenêtre.

6. le renvoi de la valeur du paramètre d'un élément sélectionné à une variable de son type. Considérer trois types d'éléments différents.

7. Définition de valeurs dans les paramètres de différents types d'éléments. Voyons comment les valeurs apparaîtront dans les fenêtres d'interface de ces éléments.

8. Renvoyer les valeurs des paramètres d'un élément, modifier et transmettre cette valeur à un autre élément. Considérons différents types d'éléments et de valeurs, et testons la transmission entre différents types d'éléments dans différentes fenêtres.

9. Retour de la valeur précédente (_V_LAST). Quand et dans quels cas la dernière valeur est requise (à ne pas confondre avec la valeur actuelle).

10. Tester le réglage des états ON/OFF/LOCK_ON/LOCK_OFF/LOCK/UNLOCK pour différents types d'éléments.

11. Essayons de lier et de synchroniser les changements de valeurs d'éléments de différents types : par exemple, un champ de saisie avec des boutons et un curseur. Supposons que lorsque la valeur d'un élément (manuel ou logiciel) change, la valeur du second élément change en conséquence.

12. Essayons de réinitialiser par programme les limites de la plage du curseur et du champ de saisie avec boutons au moyen de fonctions d'enveloppe. Je n'ai pas eu le temps de le tester, mais quelque chose me laisse penser que cela fonctionnera. Cependant, voyons ce qu'il en est.

13. Essayons de renvoyer les états des éléments via des fonctions wrapper. C'est inclus dans la fonctionnalité, mais je n'ai pas eu le temps de le tester. Nous verrons bien... Le résultat est inconnu.

14. Obtenons et définissons des couleurs pour le texte et les bases des éléments. Nous pouvons essayer d'associer ces couleurs à des événements simples ou à des limites de valeurs.

15. Je vous en dirai plus sur la manière de naviguer et de lire le nouveau fichier API imprimé.

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

Les sujets que nous avons déjà abordés sont surlignés en jaune.


Aujourd'hui, nous allons passer en revue :

11. Synchronisation (liaison) de la modification des valeurs d'éléments de types différents : par exemple, un champ de saisie avec des boutons et un curseur. Ainsi, lorsque l'on modifie la valeur d'un élément (manuel ou logiciel), la valeur du second élément change en conséquence.

12. Essayons de réinitialiser par programme les limites de la plage du curseur et du champ de saisie avec boutons via des fonctions d'enveloppe. Je n'ai pas eu le temps de le tester, mais quelque chose me laisse penser que cela fonctionnera. Cependant, voyons ce qu'il en est.

13. Essayons de renvoyer les états des éléments via des fonctions wrapper. C'est inclus dans la fonctionnalité, mais je n'ai pas eu le temps de le tester. Nous verrons bien... Le résultat est inconnu.

Документация по MQL5: Основы языка / Операторы / Оператор возврата return
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
  • www.mql5.com
Оператор return прекращает выполнение текущей функции и возвращает управление вызвавшей программе. Результат вычисления выражения возвращается...
 
Le thème est vaste, il y a beaucoup de gifs et d'images. Cela prend du temps...
 

11. Liaison des paramètres d'éléments de différents types.

L'observateur a remarqué que dans une interface graphique multifenêtre, différents éléments sont souvent liés par des valeurs de paramètres, des propriétés et des états. En voici un exemple :

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

  • Le texte saisi apparaît soudainement dans des éléments d'autres fenêtres.
  • Un paramètre réglable à l'aide de boutons +/- modifie la position d'un curseur ou d'un nombre dans un champ.
  • Le champ de texte traduit une chaîne de caractères dans une cellule de tableau d'une autre fenêtre.
  • Une option de liste déroulante modifie la couleur ou la police des éléments.
  • Une case à cocher cliquée verrouille un groupe de boutons radio.
  • Etc.

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

On pourrait croire qu'il existe une connexion invisible entre les éléments. Et c'est bien le cas. Mais elle n'est invisible que pour un observateur extérieur. Pour un développeur, c'est tout à fait évident et aujourd'hui nous allons l'examiner en détail.

1. La connexion des éléments a deux aspects :

  • Logique - tout programme comporte des paramètres dont les valeurs dépendent directement ou indirectement les unes des autres et se substituent les unes aux autres.Dans les programmes dotés d'une interface graphique, le lien est tracé visuellement .
  • Technique - tous les paramètres sont liés par des algorithmes internes au programme.

La réalisation technique des connexions est simplifiée par la présence d'un moteur graphique.

Je m'explique :

Dans un Expert Advisor classique, chaque paramètre est inventé, nommé, stocké et traité par l'utilisateur. Il s'agit d'un travail de routine qui ne peut être contourné. Toutefois, dans le cas de l'utilisation d'un moteur graphique, les éléments créés dans le constructeur reçoivent automatiquement le paramètre ainsi que l'emplacement de stockage et la fonction de traitement/retour. En outre, l'utilisateur obtient leurs propriétés telles que le type, la plage, la valeur passée, etc. Cela simplifie grandement le travail. En théorie, il est possible d'utiliser les paramètres prêts à l'emploi des éléments de l'interface graphique comme d'autres paramètres utilisateur, en les reliant directement à la logique de négociation. Par exemple, lot, trailing stop, take take profit et autres, non pas à partir de leurs propres variables, mais à partir des champs de paramétrage responsables de leurs valeurs.

Quelques conclusions générales :

1. La présence d'un contrôle graphique dans un programme = la présence d'un paramètre de programme prêt à l'emploi + ses propriétés + la fonction de retour/réglage de la valeur.

2. Plus il y a de contrôles dans les fenêtres du programme d'interface, plus il y a de paramètres impliqués dans la logique de négociation et l'entrée/sortie des informations de négociation.

3) Plus il y a de paramètres et de fenêtres, plus le contrôle est élevé et plus la largeur de bande de la sortie des données du marché est importante(sans préjudice de l'automatisation).

4. Plus le contrôle est élevé et plus la bande passante des données de marché est large, plus le trader est conscient de la situation.

5. Conscience multipliée par l'automatisation et le contrôle = multiplication des opportunités pour le trader.

Je dois ajouter que l'automatisation est souvent opposée au contrôle manuel. On dit que le fait d'avoir une interface graphique signifie que l'on négocie manuellement. Mais ce n'est pas le cas. L'interface logicielle n'exclut pas l'automatisation mais l'étend, en lui ajoutant un "gradient" - elle ouvre trois options : lecontrôle manuel, la négociation semi-automatique et le mode autonome.

Il suffit au trader de sélectionner une option.

Il est facile de créer une fenêtre à cet effet.

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


2. Passons maintenant à la mise en œuvre technique des paramètres de liaison des contrôles.

Examinons quelques exemples pratiques :

1) Ouvrons une fenêtre de paramétrage familière :

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

   w_6_Settings_example_1();
   //------------------------------------------------



2. ouvrons le fichier API et trouvons les éléments de la fenêtre ouverte dans la fonction On_Gui_Event() :




Rappel : tous les événements de contrôle entrent dans la fonction On_Gui_Event() ;

À cet égard, nous écrirons certains des liens de paramètres à l'intérieur de cette fonction et d'autres à l'extérieur de son corps.


1. Établissons un lien entre le champ avec boutons (S_EDIT) "Tourner la valeur" et le curseur (H_SLIDER) "Rouler la valeur" :

  • Trouvez le champ avec les boutons "Faire tourner la valeur" dans le fichier API.
  • Faites tourner la valeur vers le curseur "Faire tourner la valeur".

*(note importante : les fonctions des éléments et des fenêtres doivent être déplacées du fichier UIDATA vers le bas du fichier API pour que l'intellisense fonctionne. dans la prochaine version, elles seront imprimées à cet endroit).
case Settings_example_1___Spin_the_value:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the value is set?
               //------------------------------------------------------------------------------------------------------
               //Min value:  NOT SET  |   Max value:  NOT SET  |   V_step:  1.7  |   Default value:  468.99  |  Digits: 3
               //------------------------------------------------------------------------------------------------------
               w6_i_p3_H_SLIDER_Roll_the_value((int)value);
               
                 
               Alert("S_EDIT Spin_the_value    value entered: ",value);
               //------------------------------------------------------------------------------------------------------
               //Your comment: Send the value to Slider.
               //------------------------------------------------------------------------------------------------------
               break;

Résultat: nous modifions la valeur du champ à l'aide des boutons, et le curseur se déplace de lui-même.

(*Important - le curseur ne peut se déplacer qu'à l'intérieur de sa plage (dans ce cas, de 0 à 100). En cas de dépassement, la valeur ne change pas, mais une erreur est affichée dans le journal).


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

3. Inversons les rôles. Le curseur contrôlera la valeur du champ de saisie :

  • Trouvez le curseur "Roll the value" dans le fichier API.
  • Écrivez la valeur envoyée au champ avec les boutons "Faire tourner la valeur".
case Settings_example_1___Roll_the_value:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the slider's handle is moved?
               //------------------------------------------------------------------------------------------------------
               //Min value:  0  |   Max value:  100  |   V_step:  1  |   Default value:  75  |  Digits: Integer value
               //------------------------------------------------------------------------------------------------------
               w6_d_p5_S_EDIT_Spin_the_value((double)value);
               
               //Alert("H_SLIDER Roll_the_value    value entered: ",value);
               //------------------------------------------------------------------------------------------------------
               //Your comment: Send the value to Spin edit.
               //------------------------------------------------------------------------------------------------------
               break;

Résultat : lorsque vous déplacez la poignée du curseur, le champ avec les boutons change de valeur de manière synchrone.


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


4. Écrivons le contrôle mutuel du curseur et du champ avec boutons :

  • Trouvez les deux éléments dans le fichier API.
  • Écrivez l'envoi de la valeur. Le champ avec boutons envoie sa valeur au curseur, le curseur envoie sa valeur au champ avec boutons.

case Settings_example_1___Spin_the_value:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the value is set?
               //------------------------------------------------------------------------------------------------------
               //Min value:  NOT SET  |   Max value:  NOT SET  |   V_step:  1.7  |   Default value:  468.99  |  Digits: 3
               //------------------------------------------------------------------------------------------------------
               w6_i_p3_H_SLIDER_Roll_the_value((int)value);
               
                 
               Alert("S_EDIT Spin_the_value    value entered: ",value);
               //------------------------------------------------------------------------------------------------------
               //Your comment: Send the value to Slider.
               //------------------------------------------------------------------------------------------------------
               break;





case Settings_example_1___Roll_the_value:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the slider's handle is moved?
               //------------------------------------------------------------------------------------------------------
               //Min value:  0  |   Max value:  100  |   V_step:  1  |   Default value:  75  |  Digits: Integer value
               //------------------------------------------------------------------------------------------------------
               w6_d_p5_S_EDIT_Spin_the_value((double)value);
               
               Alert("H_SLIDER Roll_the_value    value entered: ",value);
               //------------------------------------------------------------------------------------------------------
               //Your comment: Send the value to Spin edit.
               //------------------------------------------------------------------------------------------------------
               break;

Résultat : le curseur et les champs de saisie se contrôlent mutuellement et simultanément.

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


Demain, je publierai la deuxième partie de ce thème avec d'autres éléments.

 

C'est génial ! J'ai l'intention de consulter ce fil de discussion plus en détail si j'en ai le temps. Je pensais que mon travail repoussait les limites de l'interface graphique de mt4, mais votre travail est d'un niveau supérieur.


 
Dennis Jorgenson #:

Il s'agit là d'un matériel impressionnant ! J'ai l'intention d'explorer ce sujet plus en détail quand j'aurai le temps. Je pensais que mon travail repoussait les limites de l'interface graphique de mt4, mais votre travail est d'un niveau supérieur.


Merci beaucoup pour vos aimables paroles !

 

11. Paramètres de liaison des éléments de différents types.

Suite du sujet.

Partie 2.

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

Voyons si nous pouvons appliquer la méthode de liaison présentée à d'autres éléments. Par exemple, aux cases à cocher.

1. Faisons en sorte que la case à cocher du haut verrouille et déverrouille la case à cocher du bas :


Pour ce faire, procédez comme suit

1. Trouvons la case à cocher"Set an option" dans le fichier API.

2. Écrivons un appel de fonction pour la case à cocher"Définir une autre option" qui doit se verrouiller/déverrouiller.

//===========================================================================================================================
//WINDOW          :---: Settings example 1 | #: 6 | PFX: w_6
//                |   |
//GET/SET         :---: int w_6_Settings_example_1(int value = get_i, int Property = 0)
//----------------|   |------------------------------------------------------------------------------------------------------
//ELEMENT         :---: TYPE: CHECKBOX | NAME: Set an option | PAR_TYPE: int | INIT STATE: OFF | PFX: w6
//                |   |------------------------------------------------------------------------------------------------------
//LOCATION        :---: Window's Main Frame 
//----------------|   |------------------------------------------------------------------------------------------------------
//G/S PROPERTIES  :---: PFX: p7_ | PROPS: NONE
//                |   |------------------------------------------------------------------------------------------------------
//G/S ACTIONS     :---: p7_ON | p7_OFF | p7_LOCK_ON | p7_LOCK_OFF | p7_GET_STATE |
//----------------|   |------------------------------------------------------------------------------------------------------
//                |   |
//GET/SET CALL    :---: int w6_i_p7_CHECKBOX_Set_an_option(int value = none, int Property = 0)
//---------------------------------------------------------------------------------------------------------------------------
  
case Settings_example_1___Set_an_option:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the checkbox is checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                //1. Lock the "Set another option" checkbox in the state ON.
                case checked:    w6_i_p7_CHECKBOX_Set_another_option(p7_LOCK_ON);   break;
  
                //2. Unlock "Set another option" checkbox in the state ON.
                case unchecked:  w6_i_p7_CHECKBOX_Set_another_option(p7_ON);        break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment: 
               //------------------------------------------------------------------------------------------------------
               break;

Résultat : la case à cocher est verrouillée et déverrouillée comme prévu :

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


2) Maintenant, faisons en sorte que la case à cocher verrouille et déverrouille les deux cases à cocher situées en dessous d'elle :

case Settings_example_1___Set_an_option:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the checkbox is checked or unchecked? 
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                //Lock both checkboxes----
                case checked:    w6_i_p7_CHECKBOX_Set_another_option(p7_LOCK_ON);  
                                 w6_i_p7_CHECKBOX_And_another_option(p7_LOCK_ON);
                break;

                //Unlock both checkboxes---
                case unchecked:  w6_i_p7_CHECKBOX_Set_another_option(p7_ON); 
                                 w6_i_p7_CHECKBOX_And_another_option(p7_ON);  
                break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;

Résultat : la case à cocher verrouille et déverrouille les deux cases à cocher situées en dessous d'elle :


Voici comment cela s'est passé dans la dynamique :

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


3) Résolvons maintenant le problème illustré dans le diagramme ci-dessous : les cases à cocher doivent verrouiller et déverrouiller les listes déroulantes situées en face d'elles.


Pour ce faire, nous devons trouver ces cases à cocher :

  • Nous devons trouver ces cases à cocher dans le fichier API.
  • Écrire des chaînes de verrouillage/déverrouillage pour les éléments cibles.

case Settings_example_1___Set_another_option:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the checkbox is checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                //Locking the element---
                case checked:    w6_s_p6_D_LIST_D_LIST_1(p6_LOCK);   break;
                
                //Unlocking the element---
                case unchecked:  w6_s_p6_D_LIST_D_LIST_1(p6_UNLOCK); break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
case Settings_example_1___And_another_option:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the checkbox is checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                //Locking the element---
                case checked:    w6_s_p6_C_LIST_C_LIST_1(p6_LOCK);   break;
                
                //Unlocking the element---
                case unchecked:  w6_s_p6_C_LIST_C_LIST_1(p6_UNLOCK); break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;

Résultat : les cases à cocher verrouillent les listes déroulantes et se verrouillent elles-mêmes avec la case à cocher principale:

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


4. Passons à la tâche suivante: les listes déroulantes doivent traduire la valeur sélectionnée par l'utilisateur dans un champ d'une autre fenêtre.


Pour ce faire, il est nécessaire de trouver la liste déroulante :

  • Il est nécessaire de trouver les listes déroulantes dans le fichier API.
  • Transmettre la valeur au champ de texte d'une autre fenêtre lors de l'événement de sélection de l'utilisateur.
case Settings_example_1___D_LIST_1:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when an option selected?
               //------------------------------------------------------------------------------------------------------
               if(selected_option == "L_ITEM  1"){}
               if(selected_option == "L_ITEM  2"){}
               if(selected_option == "L_ITEM  3"){}
               if(selected_option == "L_ITEM  4"){}
               if(selected_option == "L_ITEM  5"){}
               if(selected_option == "L_ITEM  6"){}
               if(selected_option == "L_ITEM  7"){}
               if(selected_option == "L_ITEM  8"){}
               if(selected_option == "L_ITEM  9"){}
               if(selected_option == "L_ITEM  10"){}
               if(selected_option == "L_ITEM  11"){}
               if(selected_option == "L_ITEM  12"){}
               if(selected_option == "L_ITEM  13"){}
               if(selected_option == "L_ITEM  14"){}
               if(selected_option == "L_ITEM  16"){}
               if(selected_option == "L_ITEM  17"){}
               if(selected_option == "L_ITEM  18"){}
               if(selected_option == "L_ITEM  19"){}
               if(selected_option == "L_ITEM  20"){}
  
               //-----------------------------------
               //Send user's choice to textbox "Comment 1" in another window.
               w7_s_p4_EDIT_Comment_1(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
case Settings_example_1___C_LIST_1:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when an option selected?
               //------------------------------------------------------------------------------------------------------
               if(selected_option == "Times_New_Roman"){}
               if(selected_option == "Arial"){}
               if(selected_option == "Tahoma"){}
               if(selected_option == "Dali"){}
               if(selected_option == "BatangChe"){}
               if(selected_option == "Consolas"){}
               if(selected_option == "Courier"){}
               if(selected_option == "Courier_New"){}
               if(selected_option == "DFKai_SB"){}
               if(selected_option == "DotumChe"){}
               if(selected_option == "FangSong"){}
               if(selected_option == "Fixedsys"){}
               if(selected_option == "GulimChe"){}
               if(selected_option == "GungsuhChe"){}
               if(selected_option == "KaiTi"){}
  

               //Send user's choice to textbox "Comment 2" in another window.
               w7_s_p4_EDIT_Comment_2(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;


*Résultat : les deux listes déroulantes envoient avec succès leurs valeurs aux champs de saisie de la fenêtre opposée:

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


5. La tâche suivante est illustrée dans ce diagramme : vous devez faire en sorte que les boutons radio qui sont activés envoient leur nom aux champs de saisie de la fenêtre opposée.



Pour ce faire, il faut que les boutons radio qui sont activés envoient leur nom aux champs de saisie situés en face :

  • Trouvons l'endroit où ces boutons radio sont écrits dans le fichier API.
  • Écrivons un appel de fonction du champ de saisie requis et envoyons-y le nom du bouton radio lors de l'événement de sélection de l'utilisateur.

*Note importante: les boutons radio sont activés parce que l'opérateur SWITCH leur a été appliqué dans le code KIB. Par conséquent, ils ont un paramètre commun à tous et se trouvent dans le fichier API dans le même cas.

//===========================================================================================================================
//WINDOW          :---: Settings example 2 | #: 7 | PFX: w_7
//                |   |
//GET/SET         :---: int w_7_Settings_example_2(int value = get_i, int Property = 0)
//----------------|   |------------------------------------------------------------------------------------------------------
//GROUP           :---: TYPE: R_BUTTONS | NAME: Some options group | PAR_TYPE: string | INIT OPTION: Choose option 1 | PFX: w7
//                |   |------------------------------------------------------------------------------------------------------
//LOCATION        :---: Window's Main Frame 
//----------------|   |------------------------------------------------------------------------------------------------------
//G/S PROPERTIES  :---: PFX: p7_ | PROPS: NONE
//                |   |------------------------------------------------------------------------------------------------------
//G/S ACTIONS     :---: p7_ON | p7_OFF | p7_LOCK_ON | p7_LOCK_OFF | p7_GET_STATE |
//----------------|   |------------------------------------------------------------------------------------------------------
//                |   |
//GET/SET CALL    :---: string w7_s_p7_R_BUTTON_Some_options_group(string value = get_s, int Property = 0)
//---------------------------------------------------------------------------------------------------------------------------
  
case Settings_example_2___Some_options_group:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when an option selected?
               //------------------------------------------------------------------------------------------------------
               if(selected_option == "Choose option 1"){}
               if(selected_option == "Choose option 2"){}
               if(selected_option == "Choose option 3"){}
              
              
               //We send user's choise into the textbox "Comment 3".
               w7_s_p4_EDIT_Comment_3(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;

Résultat : la commutation des boutons entraîne une modification du texte dans le champ de saisie. *Il ya un petit problème technique avec cette option. Ilsera corrigé dans la prochaine version.

La deuxième partie est terminée.

Dans la troisième partie, nous travaillerons avec le tableau.

 


Dernière partie du thème de la liaison des paramètres.

Transmettons les valeurs des paramètres de l'élément aux cellules du tableau.

Schéma :



Solution :

  • Trouvons les éléments requis dans le fichier API.
  • Dans chacun d'eux, écrivons le passage de la valeur à la cellule de tableau assignée.

case Settings_example_1___D_LIST_1:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when an option selected?
               //------------------------------------------------------------------------------------------------------
               if(selected_option == "L_ITEM  1"){}
               if(selected_option == "L_ITEM  2"){}
               if(selected_option == "L_ITEM  3"){}
               if(selected_option == "L_ITEM  4"){}
               if(selected_option == "L_ITEM  5"){}
               if(selected_option == "L_ITEM  6"){}
               if(selected_option == "L_ITEM  7"){}
               if(selected_option == "L_ITEM  8"){}
               if(selected_option == "L_ITEM  9"){}
               if(selected_option == "L_ITEM  10"){}
               if(selected_option == "L_ITEM  11"){}
               if(selected_option == "L_ITEM  12"){}
               if(selected_option == "L_ITEM  13"){}
               if(selected_option == "L_ITEM  14"){}
               if(selected_option == "L_ITEM  16"){}
               if(selected_option == "L_ITEM  17"){}
               if(selected_option == "L_ITEM  18"){}
               if(selected_option == "L_ITEM  19"){}
               if(selected_option == "L_ITEM  20"){}
  
               //-----------------------------------
               //Send user's choise to the cell "CELL_Account_name__Value"
               w8_s_p4_CELL_Account_name__Value(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
case Settings_example_1___C_LIST_1:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when an option selected?
               //------------------------------------------------------------------------------------------------------
               if(selected_option == "Times_New_Roman"){}
               if(selected_option == "Arial"){}
               if(selected_option == "Tahoma"){}
               if(selected_option == "Dali"){}
               if(selected_option == "BatangChe"){}
               if(selected_option == "Consolas"){}
               if(selected_option == "Courier"){}
               if(selected_option == "Courier_New"){}
               if(selected_option == "DFKai_SB"){}
               if(selected_option == "DotumChe"){}
               if(selected_option == "FangSong"){}
               if(selected_option == "Fixedsys"){}
               if(selected_option == "GulimChe"){}
               if(selected_option == "GungsuhChe"){}
               if(selected_option == "KaiTi"){}
  

               //Send user's choice to textbox "Comment 2" in another window.
               w8_s_p4_CELL_Leverage__Value(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
case Settings_example_1___Roll_the_value:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the slider's handle is moved?
               //------------------------------------------------------------------------------------------------------
               //Min value:  0  |   Max value:  100  |   V_step:  1  |   Default value:  75  |  Digits: Integer value
               //------------------------------------------------------------------------------------------------------

               //Sending the slider's value into the table cell.
               w8_s_p4_CELL_Account_balance__Value(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
case Settings_example_2___Comment_1:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the text is entered?
               //------------------------------------------------------------------------------------------------------
               
               //Sending textbox's text into the cell
               w8_s_p4_CELL_Account_number__Value(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
case Settings_example_2___Comment_2:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the text is entered?
               //------------------------------------------------------------------------------------------------------
               
               //Sending textbox's text into the cell
               w8_s_p4_CELL_Account_server__Value(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
case Settings_example_2___Comment_3:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when the text is entered?
               //------------------------------------------------------------------------------------------------------
      
               //Sending textbox's text into the cell
               w8_s_p4_CELL_Account_currency__Value(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
case Settings_example_2___C_LIST_1:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when an option selected?
               //------------------------------------------------------------------------------------------------------
               if(selected_option == "Times_New_Roman"){}
               if(selected_option == "Arial"){}
               if(selected_option == "Tahoma"){}
               if(selected_option == "Dali"){}
               if(selected_option == "BatangChe"){}
               if(selected_option == "Consolas"){}
               if(selected_option == "Courier"){}
               if(selected_option == "Courier_New"){}
               if(selected_option == "DFKai_SB"){}
               if(selected_option == "DotumChe"){}
               if(selected_option == "FangSong"){}
               if(selected_option == "Fixedsys"){}
               if(selected_option == "GulimChe"){}
               if(selected_option == "GungsuhChe"){}
               if(selected_option == "KaiTi"){}
  

               //Sending C_LIST value into the cell.
               w8_s_p4_CELL_Account_profit__Value(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
case Settings_example_2___D_LIST_1:
  
               //------------------------------------------------------------------------------------------------------
               //What to do when an option selected?
               //------------------------------------------------------------------------------------------------------
               if(selected_option == "L_ITEM  1"){}
               if(selected_option == "L_ITEM  2"){}
               if(selected_option == "L_ITEM  3"){}
               if(selected_option == "L_ITEM  4"){}
               if(selected_option == "L_ITEM  5"){}
               if(selected_option == "L_ITEM  6"){}
               if(selected_option == "L_ITEM  7"){}
               if(selected_option == "L_ITEM  8"){}
               if(selected_option == "L_ITEM  9"){}
               if(selected_option == "L_ITEM  10"){}
               if(selected_option == "L_ITEM  11"){}
               if(selected_option == "L_ITEM  12"){}
               if(selected_option == "L_ITEM  13"){}
               if(selected_option == "L_ITEM  14"){}
               if(selected_option == "L_ITEM  16"){}
               if(selected_option == "L_ITEM  17"){}
               if(selected_option == "L_ITEM  18"){}
               if(selected_option == "L_ITEM  19"){}
               if(selected_option == "L_ITEM  20"){}
  

               //Sending the D_LIST value into the cell.
               w8_s_p4_CELL_Account_equity__Value(value);
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;

Résultat : les valeurs sont placées en toute sécurité dans les cellules de tableau sélectionnées.


Comme vous pouvez le voir dans les exemples ci-dessus, nous avons développé une solution simple et pratique. J'espère que les gens la trouveront utile.


Ceci conclut le sujet de la liaison des paramètres d'éléments.

 

Les sujets suivants restent à traiter :

12. Obtention/réglage programmatique des limites de valeur du curseur et du champ du bouton(_V_MIN, _V_MAX, _V_STEP, _DIGITS).

13. Interroger l'état des éléments(_GET_STATE).

14. Lier les couleurs du texte et du cadre aux limites des valeurs espacées.

15. Orientation dans le fichier API.


Ajout d'un thème :

16. Réalisation de la logique de programme de l'apparence des fenêtres de message et d'avertissement.