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

 

Propager les boutons et définir les propriétés générales du texte :


 

Code :

//DECLARE A NEW WINDOW
//----------------------------------------------------------------------------------
NEW_WINDOW,  
//------------------------------------------------------
/*SET WINDOW TYPE*/         W_TYPE, SETTINGS,  
//------------------------------------------------------
/*WRITE WINDOW'S NAME*/     W_NAME, "My first window",
//------------------------------------------------------
/*POINT TO WINDOW'S ICON*/  W_ICON, "::Images\\16x16\\Smile.bmp",  
//------------------------------------------------------

//------------------------------------------------------
/*SET WINDOW'S ADDITIONAL PROPERTIES*/   
//----------------------------------------------------------------------------------
/*WINDOW OPENS AT START*/   OPEN_ON_INIT,  /*(OOI)*/

/*WINDOW IS ALWAYS ON TOP*/ ALWAYS_ON_TOP, /*(OOT)*/  

/*ОТСТУПЫ КРАЕВ ОКНА*/      MARGINS, 20,20,  /*Х, Y*/
//----------------------------------------------------------------------------------
//
//----------------------------------------------------------------------------------
//1. DECLARE A GROUP WITH AN ABSTRACT NAME  A.
//2. DECLARE A NEW ROW OF ELEMENTS IN THE GROUP WITH A SYMBOL  __, 
//3. DECLARE A BUTTON AND WRITE IT'S NAME.
//4. END GROUP WITH THE KEYWORDS  END_GROUP,
//------------------------------------------------------
GROUP, A,

__, BUTTON, "Button 1",  BUTTON, "Button 5", 
__, BUTTON, "Button 2",  BUTTON, "Button 6", 
__, BUTTON, "Button 3",  BUTTON, "Button 7", 
__, BUTTON, "Button 4",  BUTTON, "Button 8", 

END_GROUP,
//--------------------------

//--------------------------
//SET GROUP POSITION:
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 10,
//--------------------------
i, X_GAP, 30,
i, Y_GAP, 20,
//--------------------------
//SET MAIN PROPERTIES (IF YOU DON'T, THEY WILL HAVE DEFAULT VALUES): 
//PROPERTIES FOR ALL BUTTONS IN THE GROUP
//--------------------------
i, BUTTONS, text, N_COLOR,  (uint)clrBlack,
            text, A_COLOR,  (uint)clrRed,
            text, P_COLOR,  (uint)clrLime,
            text, AP_COLOR, (uint)clrWhite,  
            
            FONT_SIZE, 12, 
            TEXT_FONT,"Courier New",
            TEXT_STYLE,(int)FONT_ITALIC,
            
            FIC,          //FIXED IF CLICKED       
                                         
   END, 
//--------------------------

//------------------------------------------------------
//FINISH THE WINDOW BY KEYWORDS END_WINDOW,
//------------------------------------------------------
END_WINDOW,
//----------------------------------------------------------------------------------
 
Excellent exemple de tutoriel, continuez s'il vous plaît
 
hini #:
Excellent exemple de manuel, continuez s'il vous plaît.
D'accord. Chaque jour, je vais faire une leçon comme celle-ci.
 


Informations générales sur le langage de balisage et le constructeur.


1. Les valeurs des propriétés des éléments du constructeur sont prédéfinies. Si elles ne sont pas explicitement définies, des valeurs par défaut sont attribuées aux propriétés.


2) Le comportement interactif des éléments est préprogrammé, mais l'utilisateur a la possibilité de modifier ou de désactiver différentes réponses.


3. La taille des fenêtres de l'interface est calculée automatiquement lors du calcul de la position et de la taille des groupes constitutifs. Les marges droite et inférieure (marges) sont également prises en compte si elles sont spécifiées par l'utilisateur.


4. La longueur de certains éléments dépend directement de la longueur des textes. Elle est calculée automatiquement si l'utilisateur n'a pas fixé de valeur explicite. Dans le cas contraire, le constructeur coupe le texte qui dépasse l'élément et met une ligne pointillée pour enregistrer la valeur de l'utilisateur. Ces éléments comprennent les cases à cocher, les boutons radio, les étiquettes de texte, les tabulations horizontales et verticales.


5. Lors de la construction d'une fenêtre, le concepteur s'efforce d'obtenir une disposition tabulaire et de maintenir une symétrie dans les groupes d'éléments. Les cases à cocher ou les éléments de type similaire sont automatiquement alignés sur une valeur de longueur commune.


6. L'adhésion du concepteur à une disposition tabulaire facilite grandement la construction de l'interface et, pour une plus grande flexibilité, elle est conçue pour diviser les éléments en groupes avec un arrangement à l'aide de drapeaux et de liens.


7. Il n'y a pas de limite au nombre d'éléments dans une seule fenêtre.


8. Il n'y a pas de limite au nombre de fenêtres dans un même projet.


9. La présence d'une barre des tâches et d'un menu contextuel est obligatoire pour TOUS les projets. Cependant, l'apparition de la barre des tâches peut être désactivée si vous commentez la commande OPEN_ON_INIT (OOI) dans son fichier. Il faudra alors désactiver la propriété de minimisation de la fenêtre (cette possibilité existe).


10. Sur le côté droit de la barre des tâches, l'utilisateur peut placer des boutons pour appeler ses fenêtres.


11. Tous les éléments peuvent avoir une infobulle avec un nom lorsqu'ils sont survolés par le curseur. Pour ce faire, vous devez écrire une commande dans les propriétés _,SHOW_NAMETIP.


12. Le menu contextuel du constructeur ou de l'utilisateur est accessible en double-cliquant sur le graphique.


13. Les fenêtres auxiliaires du constructeur facilitent la recherche et la sélection des attributs des éléments lors de la spécification des cadres, des couleurs, des polices, des icônes et des sons.


14. Lorsque l'on écrit du code sur la dernière version, il est nécessaire de compiler le code de balisage puis de compiler l'indicateur KIB-source.mq5, sinon il y a une erreur sous la forme d'un écran blanc et d'un blocage (il n'y a pas de problème de ce type sur l'ancienne version 2470).


La suite suit...

 
Ensuite, étudions la disposition des éléments lors de la construction d'un groupe.
 

Positionnement d'un groupe dans une fenêtre :



Définition de l'indentation de la fenêtre à droite et en bas :

0.


1.

2.




Réglage de l'espacement entre les éléments :

1.

2.


3.


5.


6.


7.


8.


9.




Galleria di interfacce utente scritte in MQL
Galleria di interfacce utente scritte in MQL
  • 2024.05.30
  • Реter Konow
  • www.mql5.com
Di recente, mentre riordinavo il mio vecchio computer portatile, mi sono imbattuto per caso in una cartella persa nella selva delle directory...
 

Code :

//+------------------------------------------------------------------+
//|                                              My first window.mqh |
//+------------------------------------------------------------------+
//DECLARE A NEW WINDOW
//----------------------------------------------------------------------------------
NEW_WINDOW,  
//------------------------------------------------------
/*SET WINDOW TYPE*/         W_TYPE, SETTINGS,  
//------------------------------------------------------
/*WRITE WINDOW'S NAME*/     W_NAME, "My first window",
//------------------------------------------------------
/*POINT TO WINDOW'S ICON*/  W_ICON, "::Images\\16x16\\Smile.bmp",  
//------------------------------------------------------

//------------------------------------------------------
/*SET WINDOW'S ADDITIONAL PROPERTIES*/   
//----------------------------------------------------------------------------------
/*WINDOW OPENS AT START*/   OPEN_ON_INIT,  /*(OOI)*/

/*WINDOW IS ALWAYS ON TOP*/ ALWAYS_ON_TOP, /*(OOT)*/  

/*MARGINS OF THE WINDOW*/   MARGINS, 40,40,/*Х, Y*/
//----------------------------------------------------------------------------------
//
//----------------------------------------------------------------------------------
//1. DECLARE A GROUP WITH AN ABSTRACT NAME  A.
//2. DECLARE A NEW ROW OF ELEMENTS IN THE GROUP WITH A SYMBOL  __, 
//3. DECLARE A BUTTON AND WRITE IT'S NAME.
//4. END GROUP WITH THE KEYWORDS  END_GROUP,
//------------------------------------------------------
GROUP, A,
 
__, BUTTON, "Button 1", GAP,40, BUTTON, "Button 7",

GAP,40, //GAP BETWEEN THE LINES

__, BUTTON, "Button 2", GAP,40, BUTTON, "Button 8",

GAP,40,  //GAP BETWEEN THE LINES

__, BUTTON, "Button 3", GAP,40, BUTTON, "Button 9",
__, BUTTON, "Button 4", GAP,40, BUTTON, "Button 10",
__, BUTTON, "Button 5", GAP,40, BUTTON, "Button 11",
__, BUTTON, "Button 6", GAP,40, BUTTON, "Button 12",

END_GROUP,
//--------------------------

//--------------------------
//SET GROUP POSITION:
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 10,
//--------------------------

//--------------------------
//SET MAIN PROPERTIES (IF YOU DON'T, THEY WILL HAVE DEFAULT VALUES): 

//------------------------------------------------------
//FINISH THE WINDOW BY KEYWORDS END_WINDOW,
//------------------------------------------------------
END_WINDOW,
//----------------------------------------------------------------------------------


//+------------------------------------------------------------------+
//|                                              My first window.mqh |
//+------------------------------------------------------------------+
//DECLARE A NEW WINDOW
//----------------------------------------------------------------------------------
NEW_WINDOW,  
//------------------------------------------------------
/*SET WINDOW TYPE*/         W_TYPE, SETTINGS,  
//------------------------------------------------------
/*WRITE WINDOW'S NAME*/     W_NAME, "My first window",
//------------------------------------------------------
/*POINT TO WINDOW'S ICON*/  W_ICON, "::Images\\16x16\\Smile.bmp",  
//------------------------------------------------------

//------------------------------------------------------
/*SET WINDOW'S ADDITIONAL PROPERTIES*/   
//----------------------------------------------------------------------------------
/*WINDOW OPENS AT START*/   OPEN_ON_INIT,  /*(OOI)*/

/*WINDOW IS ALWAYS ON TOP*/ ALWAYS_ON_TOP, /*(OOT)*/  

/*MARGINS OF THE WINDOW*/   MARGINS, 40,40,/*Х, Y*/
//----------------------------------------------------------------------------------
//
//----------------------------------------------------------------------------------
//1. DECLARE A GROUP WITH AN ABSTRACT NAME  A.
//2. DECLARE A NEW ROW OF ELEMENTS IN THE GROUP WITH A SYMBOL  __, 
//3. DECLARE A BUTTON AND WRITE IT'S NAME.
//4. END GROUP WITH THE KEYWORDS  END_GROUP,
//------------------------------------------------------
GROUP, A,
 
__, BUTTON, "Button 1",  BUTTON, "Button 7",
__, BUTTON, "Button 2",  BUTTON, "Button 8",
__, BUTTON, "Button 3",  BUTTON, "Button 9",
__, BUTTON, "Button 4",  BUTTON, "Button 10",
__, BUTTON, "Button 5",  BUTTON, "Button 11",
__, BUTTON, "Button 6",  BUTTON, "Button 12",

END_GROUP,
//--------------------------

//--------------------------
//SET GROUP POSITION:
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 10,
//--------------------------
i, X_GAP, 40, //GAP BETWEEN THE ELEMENTS IN THE ROW

i, Y_GAP, 40,  //GAP BETWEEN THE ROWS 
//--------------------------
//SET MAIN PROPERTIES (IF YOU DON'T, THEY WILL HAVE DEFAULT VALUES): 




//------------------------------------------------------
//FINISH THE WINDOW BY KEYWORDS END_WINDOW,
//------------------------------------------------------
END_WINDOW,
//----------------------------------------------------------------------------------
 

Dans la continuité du thème de la mise en page des éléments, tout est clair avec les boutons, car ils ont soit des tailles par défaut, soit par définition de l'utilisateur. Mais avec les éléments dont la longueur est liée à la longueur du texte, tout est ambigu. Voici quelques exemples avec les cases à cocher et les boutons radio :

1) Les noms des cases à cocher et des boutons radio sont presque identiques.


2. un bouton radio est beaucoup plus long que les autres. Ils deviennent de même longueur :


3. Dans la deuxième colonne, la case à cocher du milieu est beaucoup plus longue. Les autres prennent sa taille :


4. Le fait de définir explicitement la longueur des cases à cocher et des boutons radio entraîne un raccourcissement automatique du texte sortant.


 
Code d'option 1 :
GROUP, A,
 
__, R_BUTTON, "R_button with a long name", CHECKBOX, "Checkbox 1",
__, R_BUTTON, "R_button 2", CHECKBOX, "Checkbox 2",
__, R_BUTTON, "R_button 3", CHECKBOX, "Checkbox 3", 
__, R_BUTTON, "R_button 4", CHECKBOX, "Checkbox 4 with the longest name",
__, R_BUTTON, "R_button 5", CHECKBOX, "Checkbox 5",
__, R_BUTTON, "R_button 6", CHECKBOX, "Checkbox 6",

END_GROUP,
//--------------------------

//--------------------------
//SET GROUP POSITION:
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 10,
//--------------------------
i, X_GAP, 30,

i, Y_GAP, 30,
//--------------------------

Code d'option 2 :

//------------------------------------------------------
GROUP, A,
 
__, R_BUTTON, "R_button with a long name", CHECKBOX, "Checkbox 1",
__, R_BUTTON, "R_button 2", CHECKBOX, "Checkbox 2",
__, R_BUTTON, "R_button 3", CHECKBOX, "Checkbox 3", 
__, R_BUTTON, "R_button 4", CHECKBOX, "Checkbox 4 with the longest name",
__, R_BUTTON, "R_button 5", CHECKBOX, "Checkbox 5",
__, R_BUTTON, "R_button 6", CHECKBOX, "Checkbox 6",

END_GROUP,
//--------------------------
//SET GROUP POSITION:
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 10,
//--------------------------
// SET PROPERTIES EXPLICITLY FOR R_BUTTONS
//--------------------------
i, R_BUTTONS,  W, 120, END,
//--------------------------
// SET PROPERTIES EXPLICITLY FOR CHECKBOXES
//--------------------------
i, CHECKBOXES, W, 90,  END,
//--------------------------
i, X_GAP, 30,

i, Y_GAP, 30,
//--------------------------