Galería de interfaces de usuario escritas en MQL - página 32

 

Propaga los botones y establece las propiedades generales del texto:


 

Código:

//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,
//----------------------------------------------------------------------------------
 
Gran tutorial de ejemplo, por favor continúe
 
hini #:
Gran ejemplo de libro de texto, por favor continúe.
De acuerdo. Cada día voy a hacer una lección como esta.
 


Información general sobre el lenguaje de marcado y el constructor.


1. Los valores de las propiedades de los elementos constructores están predefinidos. Si no se definen explícitamente, se asignan valores por defecto a las propiedades.


2. El comportamiento interactivo de los elementos está preprogramado, pero el usuario tiene la posibilidad de cambiar o desactivar diferentes respuestas.


3. El tamaño de las ventanas de la interfaz se calcula automáticamente al calcular la posición y el tamaño de los grupos que la componen. También se tienen en cuenta los márgenes derecho e inferior (márgenes) si los especifica el usuario.


4. La longitud de algunos elementos depende directamente de la longitud de los textos. Se calcula automáticamente si el usuario no ha establecido un valor explícito. En caso contrario, el constructor corta el texto que sobrepasa el elemento y pone una línea de puntos para guardar el valor del usuario. Entre estos elementos se encuentran la casilla de verificación, el botón de radio, la etiqueta de texto y el tabulador horizontal y vertical.


5. Al construir una ventana, el diseñador se esfuerza por conseguir una disposición tabular y mantener la simetría en los grupos de elementos. Las casillas de verificación o elementos de tipo similar se alinean automáticamente a un valor de longitud común.


6. La adhesión del diseñador a una disposición tabular hace que sea mucho más fácil construir la interfaz y, para una mayor flexibilidad, está diseñada para dividir los elementos en grupos con disposición mediante banderas y enlaces.


7. No hay límite para el número de elementos en una sola ventana.


8. No hay límite en el número de ventanas dentro de un mismo proyecto.


9. La presencia de una barra de tareas y un menú contextual es obligatoria para TODOS los proyectos. Sin embargo, la aparición de la barra de tareas puede desactivarse si se comenta el comando OPEN_ON_INIT (OOI) en su archivo. Entonces será necesario desactivar la propiedad de minimización de ventanas (existe tal posibilidad).


10. En la parte derecha de la barra de tareas, el usuario puede establecer botones para llamar a sus ventanas.


11. Todos los elementos pueden tener un tooltip con un nombre al pasar el cursor por encima. Para ello es necesario escribir un comando en las propiedades _,SHOW_NAMETIP.


12. El menú contextual del constructor o usuario está en doble clic en el gráfico.


13. Las ventanas auxiliares del constructor facilitan la búsqueda y selección de atributos de los elementos al especificar marcos, colores, fuentes, iconos y sonidos.


14. Al escribir código en la última compilación es necesario compilar el código de marcado y luego compilar el indicador KIB-source.mq5, de lo contrario se produce un error en forma de una pantalla blanca y se cuelga (no hay tal problema en la antigua compilación 2470).


La continuación sigue...

 
A continuación, vamos a estudiar la disposición de los elementos al construir un grupo.
 

Posicionamiento de un grupo en una ventana:



Fijar la sangría de la ventana a la derecha y abajo:

0.


1.

2.




Establecer espacios entre elementos:

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...
 

Código:

//+------------------------------------------------------------------+
//|                                              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,
//----------------------------------------------------------------------------------
 

Siguiendo con el tema de la disposición de los elementos. Todo está claro con los botones, porque tienen tamaños por defecto o por definición del usuario. Pero con los elementos cuya longitud está ligada a la longitud del texto, todo es ambiguo. He aquí algunos ejemplos con casillas de verificación y botones de radio:

1. Los nombres de las casillas de verificación y los botones de radio son casi iguales.


2. Un botón de opción es mucho más largo que los demás. Pasan a tener la misma longitud:


3. En la segunda columna, la casilla del medio es mucho más larga. Las otras toman su tamaño:


4. Al establecer explícitamente la longitud de las casillas de verificación y los botones de opción, se acorta automáticamente el texto saliente.


 
Código de opción 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,
//--------------------------

Código de opción 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,
//--------------------------