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

 
Empecemos en una nueva página.
 

9. Devuelve el valor anterior de _V_LAST .

El valor anterior de todos los parámetros se guarda automáticamente. Para obtenerlo, es necesario llamar a la función elemento y pasar el identificador _V_LAST.

Veamos cómo se hace en un ejemplo práctico:

1. Abra la ventana deseada:

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

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



2. 2. Envíe un valor (cadena de caracteres) al campo de entrada superior:

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

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



3. Envíe ahora otra cadena al mismo campo:

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

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



4. Obtenemos de vuelta la cadena anterior:

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

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


5. Y la enviamos al campo inferior:

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

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


6. Volvamos a escribir la cadena del campo de arriba:

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

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


7. Enviemos la cadena anterior al campo inferior:

   //------------------------------------------------
   //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);
   //------------------------------------------------



Resultado:

  • En el campo superior la cadena actual.
  • En el campo del medio - la cadena original.
  • En el campo inferior - la segunda cadena.

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

El mismo método funciona en todos los casos.

Utilizando el identificador _V_LAST , puede obtener el último valor de cualquier elemento (si el identificador está prescrito en la lista de propiedades individuales).




A continuación, considere la posibilidad de establecer estados ON/OFF y bloquear elementos.

 
Реter Konow #:
El mismo enfoque funciona en todos los casos.

¿Incluye también el estado ON/OFF?

 
hini #:

¿Incluye también un estado ON/OFF?

_V_LAST devuelve el valor del último parámetro de cualquier elemento.

Puede utilizar el enfoque mostrado anteriormente para otros elementos. Mostraré el ejemplo de un deslizador y un campo con botones después del tema del cambio de estado de los elementos.

Cuando veamos la sincronización, un campo devolverá el valor actual del deslizador y el otro devolverá el valor anterior.

 

10.Establecer estadosON, OFF, LOCK_ON, LOCK_OFF, LOCK, UNLOCKpara diferentes elementos:

Hay tipos de elementos que tienen estadosON y OFF, el ejemplo clásico son los botones y las casillas de verificación. Sin embargo, hay muchos elementos que siempre están en un estado neutro. Siempreapagados. ¿Qué tienen en común con los botones y las casillas de verificación? Ambos puedenbloquearse y desbloquearse. La diferencia es quelos botones y las casillas de verificación se bloquean en dos estados: encendido y apagado, mientras que los demás elementos sólo están enestado neutro. Debido a estas diferencias, existen varios identificadores que realizan la misma función: bloquean y desbloquean elementos.

Veamos algunos ejemplos prácticos:

1. Abramos la ventana de configuración con botones y casillas de verificación:

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



2. Establezcamos el estado activado para el botón:

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

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

Resultado: el botón ha pasado al estado pulsado.


3. Ahora, establezcamos el estadoactivado para las casillas de verificación:

   //------------------------------------------------
   //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);
   //------------------------------------------------

Resultado: las casillas de verificación han pasado al estado activado.

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


4. Ahora, eliminemos el estado ON del botón "Inicio" utilizando el identificadorOFF:

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

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

Resultado: el botón ha vuelto al estado neutro.


5. 5.Devolvamos el estado neutroOFF a las casillas de verificación :

   //------------------------------------------------
   //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);
   //------------------------------------------------

Resultado: las casillas de verificación han vuelto al estado neutro.


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


Ahora pasemos a bloquear el botón y las casillas de verificación en dos posibles estados: neutro y activado:


1. Bloqueemos el botón en estado neutro:

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

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

Resultado: botón bloqueado en estado neutro.

(*fallo, se arreglará).


2. Bloqueemos las casillas de verificación en estado neutro:

   //------------------------------------------------
   //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);
   //------------------------------------------------

Resultado: las casillas de verificación se bloquean en estado neutro.


(*problema de desaparición de texto en estado bloqueado para algunos elementos se solucionará en la próxima versión).


3. Bloquear el botón y las casillas de verificación en estado pulsado utilizando el identificadorLOCK_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);
   //------------------------------------------------

Resultado: el botón y las casillas de verificación quedan bloqueados en estado pulsado.



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

Ahora vamos a probar los comandosLOCK y UNLOCK para elementos que siempre están en estado neutro.

Por ejemplo, tomemos los elementosC_LIST, D_LIST, H_SLIDER y S_EDIT en la misma ventana:



1. Bloqueemos los cuatro elementos a la vez:

   //------------------------------------------------
   //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);
   //------------------------------------------------

Resultado: los elementos C_LIST, D_LIST, H_SLIDER y S_EDIT están bloqueados .


2. Desbloqueemos los elementos:

   //------------------------------------------------
   //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);
   //------------------------------------------------

Resultado: los elementos se han vuelto a desbloquear.

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

Con estos ejemplos damos por concluido este tema, ya que el resto de elementos se bloquean y desbloquean de la misma forma.

...

A continuación pasamos a la sincronización de los valores de los parámetros.

 
Muy bueno, muy práctico.
 
hini #:
Muy bueno, muy práctico.

Gracias. La evaluación de los usuarios es muy importante para el desarrollo futuro.

 
Habiendo sopesado la cantidad de material para el próximo tema, creo que sería mejor posponerlo hasta mañana para que se recuerden mejor los temas anteriores.
 

Señales de una buena GUI.

Minimalismo: mínimo espacio ocupado en los gráficos, ausencia de elementos insignificantes e información que distraiga la atención.

Funcionalidad: todo el espacio ocupado debe ser lo más útil posible, todas las funciones deben ser intuitivas.

Ergonomía: los elementos más utilizados deben ser accesibles y grandes.

Estética: alineación, tamaños estándar, estilo uniforme, combinación de colores.

 
Ivan Titov #:

Signos de una buena interfaz gráfica de usuario.

Minimalismo: mínimo espacio ocupado en los gráficos, ausencia de elementos insignificantes e información que distraiga la atención.

Funcionalidad: todo el espacio ocupado debe ser lo más útil posible, todas las funciones deben ser intuitivas.

Ergonomía: los elementos más utilizados deben ser accesibles y grandes.

Estética: alineación, dimensiones estándar, estilo uniforme, combinación de colores.


Gracias por mostrar el ejemplo. Estoy totalmente de acuerdo con sus tesis. Espero alcanzar este nivel de desarrollo con el tiempo.