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

 
//--------------------------
//FIRST GROUP
//--------------------------
GROUP, "Group 1",

__, CHECKBOX, "Checkbox 100",  

END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 10,
//--------------------------
i, CHECKBOXES, W, 120,  END,
//--------------------------
//--------------------------------------------------------------
//1. WRITE THE NAME OF THE CHECKBOX THAT WILL BLOCK THE OTHERS:
//2. WRITE KEYWORD "BLOCKS".
//3. WRITE THE NAMES OF THE ELEMENTS (OR GROUPS) IT WILL BLOCK.
//4. PUT "END" IN THE END.
//5. OR, WRITE THE NAME OF THEIR GROUP.
//--------------------------------------------------------------
"Checkbox 100", BLOCKS, "Group 2", END,
//--------------------------------------------------------------

//--------------------------
//SECOND GROUP
//--------------------------
GROUP, "Group 2",


__, H_SLIDER, "H_Slider 1", W, 120,       S_EDIT, "Textbox 1",         W, 120, 

__, C_LIST,   "Combobox 1", W, 120,       D_LIST, "Combobox 2",        W, 120, 

__, BUTTON,   "Button 1",   W,120,        D_BUTTON, "Dialog button 1", W, 120, 

END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2H, "Checkbox 100", 30,
//--------------------------
i, X_GAP, 30,
i, Y_GAP, 20,
//----------------------------
//SET MAIN PROPERTIES (IF YOU DON'T, THEY WILL HAVE DEFAULT VALUES): 

//------------------------------------------------------
 
_Y2H 是什么,是否有 _X2H ?
 
hini #: _Y2H Что это такое, и есть ли это _X2H?

Analysons l'expression _Y2H :

  • Y est une coordonnée
  • 2 signifie "à". Indique quelque chose.
  • H est l'abréviation de hauteur.

Y à Hauteur.

Dans le système de coordonnées, le déplacement du point Y de l'objet le long de son corps à une distance égale à la hauteur de l'objet (y_size) conduit à son point le plus bas. La coordonnée Y de l'objet à accrocher doit descendre le long de la hauteur de l'objet à accrocher et aboutir à son point le plus bas. En d'autres termes, elle doit couvrir la distance de hauteur de l'objet d'ancrage, c'est pourquoi l'ancrage est appelé _Y2H.


2) _X2H n' existe pas car la coordonnée X ne peut s'accrocher que dans le plan horizontal, et non dans le plan vertical, et H représente la hauteur. Il existe un accrochage _X2W, qui signifie que la coordonnée X est accrochée au point X + X_SIZE (largeur) de l'objet spécifié.


La question de l'accrochage sera abordée plus en détail ultérieurement.

 

Aujourd'hui, nous allons terminer avec les énumérations puisque nous avons commencé à en parler hier.

 

En ce qui concerne les fixations, j'ajouterai qu'il existe des règles strictes et qu'il ne sert à rien d'essayer de les expérimenter maintenant. Attendez une explication plus complète.

Il existe des liaisons qui fonctionnent séparément pour des groupes d'éléments et d'autres qui fonctionnent avec des éléments individuels au sein de groupes. Il existe également des liaisons qui permettent de positionner des objets à l'intérieur des éléments (comme du texte ou des icônes).

Nous y reviendrons plus tard.

 
Реter Konow #:

Aujourd'hui, nous allons terminer avec les énumérations puisque nous avons commencé à en parler hier.

Cependant, après mûre réflexion, j'ai décidé de reporter l'achèvement du sujet des énumérations. La compréhension de la suite de ce sujet nécessite des connaissances de base en matière de règles linguistiques, que les lecteurs ne possèdent pas encore.

Pour l'instant, continuons à nous familiariser avec les contrôles et les liaisons.

 

Jusqu'à présent, dans la plupart des cas, nous avons eu affaire à un simple bouton BOUTON. Tout le monde sait ce qu'est un bouton, c'est évident. Mais cela vaut la peine d'entrer dans les détails. Il en va de même pour les autres éléments avec lesquels nous avons travaillé précédemment. Procédons de la manière suivante : passons d'abord en revue les principales caractéristiques et fonctions, abordons tout en termes généraux, puis nous nous attarderons sur chaque élément séparément pour un examen plus approfondi.

Un bouton est donc un élément interactif qui change d'état lorsqu'on appuie dessus. Dans une interface graphique, il est utilisé à différentes fins. La plupart du temps, il sert à activer ou désactiver quelque chose, mais parfois aussi à appeler une fenêtre. Les variantes d'application d'un simple bouton sont nombreuses. Il s'agit d'un élément assez universel.

Quels autres éléments avons-nous envisagés ? Par exemple, la case à cocher. Pourquoi avez-vous besoin d'une case à cocher ? Une case à cocher est nécessaire pour activer, désactiver ou bloquer des options dans les paramètres du programme. Si vous devez choisir entre plusieurs options, l'élément R_BUTTON(bouton radio) convient. Mais à condition qu'il n'y ait que quelques options.

Et si les options sont nombreuses, mais pas trop ? On utilise alors la liste déroulante D_LIST ou la liste déroul ante C_LIST. La différence entre ces deux éléments est la présence ou l'absence d'un champ de saisie de texte dans lequel l'utilisateur peut entrer le choix souhaité. D_LIST dispose d'un tel champ, C_LISTn'en dispose pas.

Et que faire lorsqu'il y a trop d'options dans le programme ? Les listes déroulantes deviennent inconfortables en raison de leur petite taille. La solution consiste à utiliser de longues feuilles déroulantes dans de grandes fenêtres. Vous pouvez voir des exemples dans les fenêtres de police, de sons et de cadres du concepteur.

Mais ces listes ont besoin d'une barre de défilement, car elles sont très longues. C'est pourquoi il existe un élément spécial pour ces listes. "Champ de vision" V_BOX. Il s'agit d'un élément simple doté de deux barres de défilement et de son propre canevas. En outre, le défilement est à la fois vertical et horizontal. La taille du canevas est définie automatiquement à partir du calcul du contenu placé.

Les éléments de liste sont appelés L_ITEM, abréviation de"List Item". Ils sont rassemblés dans un groupe distinct et dessinés sur le canevas du champ de vision spécifié. Chaque élément porte le nom d'un élément de menu ou d'une option et est commuté à l'aide du mot-clé SWITCH_ALL. Le mot-clé"IN" est utilisé pour entrer la liste des éléments L_ITEM dans le champ de vue d'ensemble V_BOX. Le positionnement est simple : LEFT_TOP, 0,0,.


Examinons maintenant les éléments énumérés plus en détail et dans le même ordre. Nous parlerons de positionnement, d'états, de propriétés et d'attributs.

...Et nous examinerons les possibilités d'application dans le contexte des programmes pour commerçants.

 

Bouton ordinaire : BUTTON

4 variétés de boutons constructeurs :

Il a un aspect relativement désuet et des fonctionnalités simples, comme tout bouton classique. Il existe une icône.


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

  • Bouton interactif I_BUTTON - bouton interactif :

Un beau bouton interactif qui réagit en douceur au survol ou à l'éloignement du curseur. Il est utilisé comme un bouton classique, mais il est moins visible et, à l'état neutre, il n'a pas de bordures. Le plus souvent sans texte et avec une icône. Il est plus souvent de forme carrée.


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

  • Bouton de la barre d'outils (comme sur MT4) TB_BUTTON - Bouton de la barre d'outils :

Principalement utilisé pour la barre d'outils dans l'en-tête de la fenêtre principale. Souvent sans texte, mais avec une icône et généralement de forme carrée. Colle au curseur lorsqu'il est survolé. Appelle des fenêtres ou des fonctions. Possède une flèche.


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

  • D_BUTTON - bouton de dialogue :

Il se trouve au bas des boîtes de dialogue et permet d'interagir avec l'utilisateur. Il porte des textes tels que "Ok", "Oui", "Non", "Annuler", "Abandonner", "Continuer", "Accepter", "Suivant", "Précédent", "Sauter", "Confirmer", "Ouvrir", "Fermer", .... et d'autres mots de ce genre. et d'autres mots de ce genre.


Vous pouvez définir les icônes et le texte de tous les boutons, ainsi que la couleur des différents états.

En même temps, les boutons peuvent changer de texte et d'icône en fonction de l'état. Le texte ou l'icône est neutre, tandis que le texte ou l'icône est différent lorsqu'il est activé.


Par exemple :

Tous les boutons sont enfoncés et se trouvent dans un état neutre :


Nous avons appuyé sur ces boutons et ils ont changé de texte et d'icône (à l'exception du bouton de dialogue, qui ferme la fenêtre après avoir été enfoncé et n'est donc pas nécessaire).


Le texte du bouton interactif est superposé à l'icône, mais il est conçu de cette manière parce qu'il est possible de positionner l'icône et le texte à l'intérieur du bouton.

 

Ainsi, les boutons peuvent changer de texte lorsqu'on clique dessus. De plus, le texte et le nom du bouton sont deux choses différentes. Le texte de l'état neutre peut être défini avec le mot N_TEXT, et un autre texte utilisateur apparaîtra à la place du nom du bouton.

Il en va de même pour l'icône. Vous pouvez spécifier une icône pour l'état neutre et pour l'état actif.


Code :

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, "Buttons group",

__, BUTTON,   "Button 1", W, 120,_,H, 50,   D_BUTTON, "D button 1",   W, 120,_,H, 50,

__, I_BUTTON, "I Button", W, 120,_,H, 50,   TB_BUTTON, "TB button 1", W, 120,_,H, 50, 

END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 30,
//--------------------------
i, X_GAP, 30,
i, Y_GAP, 20,
//----------------------------
//SET MAIN PROPERTIES (IF YOU DON'T, THEY WILL HAVE DEFAULT VALUES): 
//----------------------------
"Button 1",    N_TEXT,  "Neutral state",

"Button 1",    A_TEXT,  "Active state",

"Button 1",    N_LABEL, "::Images\\16x16\\About.bmp",

"Button 1",    A_LABEL, "::Images\\16x16\\3d bar chart.bmp",

"Button 1",    FIC,
//----------------------------

//----------------------------
"I Button",    N_TEXT,  "Neutral", 

"I Button",    A_TEXT,  "Active",

"I Button",    N_LABEL, "::Images\\16x16\\Accounting.bmp",

"I Button",    A_LABEL, "::Images\\16x16\\Address book.bmp", 

"I Button",    FIC,
//----------------------------

//----------------------------
"D button 1",    N_TEXT,  "Also Neutral",

"D button 1",    A_TEXT,  "Also Active",

"D button 1",    N_LABEL, "::Images\\16x16\\Alarm clock.bmp",

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

//----------------------------
"TB button 1",    N_TEXT,  "TB Neutral",

"TB button 1",    A_TEXT,  "TB Active",

"TB button 1",    N_LABEL, "::Images\\16x16\\Alarm clock.bmp",

"TB button 1",    A_LABEL,  "::Images\\16x16\\Address book.bmp", 

"TB Button 1",    FIC,

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

L'une des principales fonctions des boutons est peut-être d'appeler des fenêtres. Appuyez sur le bouton d'une fenêtre et une autre fenêtre s'ouvre.

Comment cela se fait-il ?

De deux manières :

  • Nous écrivons le mot-clé OPENS_WINDOW dans les propriétés du bouton, puis le nom de la fenêtre à appeler.
  • Ou bien nous nommons le bouton de la même manière que la fenêtre qu'il doit appeler et nous cachons le texte du bouton. soit remplacer le texte du bouton par les mots N_TEXT et A_TEXT.

Il est important de noter que le fait de faire correspondre les noms des boutons ou des éléments de menu avec les noms des fenêtres entraîne l'ouverture de ces fenêtres lorsque vous cliquez sur ces éléments.

//+------------------------------------------------------------------+
//|                                              My first window.mqh |
//+------------------------------------------------------------------+
//DECLARE A NEW WINDOW
//----------------------------------------------------------------------------------
NEW_WINDOW, 
//------------------------------------------------------
/*SET WINDOW TYPE*/         W_TYPE, SETTINGS,  
//------------------------------------------------------
/*WRITE WINDOW'S NAME*/     W_NAME, "Just a window",
//------------------------------------------------------
/*SET WINDOW'S ADDITIONAL PROPERTIES*/   
//------------------------------------------------------ 
/*WINDOW IS ALWAYS ON TOP*/ ALWAYS_ON_TOP, /*(OOT)*/  
//------------------------------------------------------

END_WINDOW,
//----------------------------------------------------------------------------------




//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, "Buttons group",

__, BUTTON,  "Just a window", W, 150, //the button WILL call the window due to sharing the same name.   

END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 30,
//--------------------------
i, X_GAP, 30,
i, Y_GAP, 20,
//----------------------------
//SET MAIN PROPERTIES (IF YOU DON'T, THEY WILL HAVE DEFAULT VALUES): 
//----------------------------
"Just a window",    N_TEXT,  "Press to open",//redefine text on the button

"Just a window",    N_LABEL, "::Images\\16x16\\Alarm clock.bmp",
//------------------------------------------------------
//FINISH THE WINDOW BY KEYWORDS END_WINDOW,
//------------------------------------------------------
END_WINDOW,
//----------------------------------------------------------------------------------


Et la deuxième variante :

//+------------------------------------------------------------------+
//|                                              My first window.mqh |
//+------------------------------------------------------------------+
//DECLARE A NEW WINDOW
//----------------------------------------------------------------------------------
NEW_WINDOW, 
 
//------------------------------------------------------
/*SET WINDOW TYPE*/         W_TYPE, SETTINGS,  
//------------------------------------------------------
/*WRITE WINDOW'S NAME*/     W_NAME, "Just a window",
//------------------------------------------------------
/*SET WINDOW'S ADDITIONAL PROPERTIES*/   
//------------------------------------------------------ 
/*WINDOW IS ALWAYS ON TOP*/ ALWAYS_ON_TOP, /*(OOT)*/  
//------------------------------------------------------

END_WINDOW,
//----------------------------------------------------------------------------------




//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, "Buttons group",

__, BUTTON,  "Press to open", W, 150,   

END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 30,
//--------------------------
i, X_GAP, 30,
i, Y_GAP, 20,
//----------------------------
//SET MAIN PROPERTIES (IF YOU DON'T, THEY WILL HAVE DEFAULT VALUES): 
//----------------------------
"Press to open", OPENS_WINDOW, "Just a window",//opens the window by the keyword 

"Press to open", N_LABEL, "::Images\\16x16\\Alarm clock.bmp",
//------------------------------------------------------
//FINISH THE WINDOW BY KEYWORDS END_WINDOW,
//------------------------------------------------------
END_WINDOW,
//----------------------------------------------------------------------------------



Résultat :