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

 
Реter Konow #:
EstablecerestadoON, OFF, LOCK_ON, LOCK_OFF, LOCK, UNLOCK para diferentes elementos

¿Cómo obtener el estado on/off de un botón?

 
hini #:

¿Cómo obtener el estado on/off del botón?

Este es el siguiente tema. Lo consideraremos hoy.

Debo añadir que los elementos de esta GUI están dibujados, por lo que el método estándar de obtener el estado ObjectGetInteger(0, "button1", OBJPROP_STATE); no funcionará.

Además, permítanme recordarles que los eventos de los elementos, incluidos los botones, se envían al archivo API.

 

Una lista general de temas a tener en cuenta:

1. Orientación en la lista de intellisense y la selección de la función de la ventana de la derecha.

2. 2. Abrir y cerrar ventanas mediante programación.

3. Orientación en la lista de intellisense y selección del elemento correcto en la ventana correcta.

4. Navegando a través de listas de propiedades de elementos individuales.

5. 5. Análisis sintáctico del nombre de una función envolvente de elemento y ventana.

6. devolver el valor del parámetro de un elemento seleccionado a una variable de su tipo. Considerar tres tipos de varios elementos diferentes.

7. Estableciendo valores en los parámetros de diferentes tipos de elementos. Veamos cómo aparecerán los valores en las ventanas de interfaz de estos elementos.

8. Devolver los valores de los parámetros de un elemento, modificando y reenviando ese valor a otro elemento. Consideremos diferentes tipos de elementos y valores, y probemos el reenvío entre diferentes tipos de elementos en diferentes ventanas.

9. Devolución del valor anterior (_V_LAST). Cuándo y para qué casos se requiere el último valor (no confundir con el valor actual).

10. Probar la configuración de estados ON/OFF/LOCK_ON/LOCK_OFF/LOCK/UNLOCK para diferentes tipos de elementos.

11. Intentemos enlazar y sincronizar los cambios de valores de elementos de diferentes tipos: por ejemplo, campo de entrada con botones y deslizador. Supongamos que cuando el valor de un elemento (manual o software) cambia, el valor en el segundo elemento cambia en consecuencia.

12. Intentemos restablecer mediante programación los límites de rango del deslizador y del campo de entrada con botones a través de funciones wrapper. No he tenido tiempo de probarlo, pero algo me sugiere que funcionará. No obstante, vamos a ver.

13. Intentemos devolver estados de elementos a través de funciones wrapper. Está incluido en la funcionalidad, pero no he tenido tiempo de probarlo. Así que veremos... El resultado es desconocido.

14. Vamos a obtener y establecer colores para el texto y las bases de los elementos. Podemos intentar asociar estos colores con algunos eventos simples o límites de valores.

15. Te cuento más sobre cómo navegar y leer la nueva impresión del archivo API.

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

Los temas que ya hemos cubierto están resaltados en amarillo.


Hoy repasaremos:

11. Sincronización (enlace) de valores cambiantes de elementos de diferentes tipos: por ejemplo campo de entrada con botones y deslizador. Para que al cambiar el valor de un elemento (manual o software), el valor en el segundo elemento cambie en consecuencia.

12. Intentemos restablecer mediante programación los límites de rango del deslizador y del campo de entrada con botones a través de funciones wrapper. No he tenido tiempo de probarlo, pero algo me sugiere que funcionará. No obstante, vamos a ver.

13. Intentemos devolver estados de elementos a través de funciones wrapper. Está incluido en la funcionalidad, pero no he tenido tiempo de probarlo. Así que veremos... El resultado es desconocido.

Документация по MQL5: Основы языка / Операторы / Оператор возврата return
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
  • www.mql5.com
Оператор return прекращает выполнение текущей функции и возвращает управление вызвавшей программе. Результат вычисления выражения возвращается...
 
El tema es grande, muchos gifs e imágenes. Lleva mucho tiempo...
 

11. Vinculación de parámetros de elementos de diferentes tipos.

La persona observadora se habrá dado cuenta de que en una GUI multiventana, los distintos elementos suelen estar vinculados por valores de parámetros, propiedades y estados. Por ejemplo

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

  • El texto introducido aparece de repente en elementos de otras ventanas.
  • Un parámetro ajustable con botones +/- cambia la posición de un deslizador o un número en un campo.
  • El campo de texto traduce una cadena de caracteres en una celda de tabla de otra ventana.
  • Una opción de lista desplegable retuerce el color o la fuente de los elementos.
  • Una casilla de verificación pulsada bloquea un grupo de botones de opción.
  • Etc.

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

Se podría pensar que hay una conexión de elementos invisible en alguna parte. Y realmente la hay. Pero es invisible sólo para un observador externo. Para un desarrollador es bastante obvio y hoy lo consideraremos en detalle.

1. La conexión de elementos tiene dos caras:

  • Lógica: cualquier programa tiene parámetros cuyos valores dependen directa o indirectamente unos de otros y se anulan entre sí.En los programas con interfaz gráfica, la conexión se traza visualmente .
  • Técnica: todos los parámetros están vinculados por algoritmos internos del programa.

La realización técnica de las conexiones se simplifica gracias a la presencia de un motor gráfico.

Me explico:

En un Asesor Experto convencional, cada parámetro es inventado, nombrado, almacenado y procesado por elusuario. Se trata de un trabajo rutinario que no se puede eludir. Sin embargo, en caso de utilizar un motor gráfico, los elementos creados en el constructor reciben automáticamente el parámetro junto con la ubicación de almacenamiento y la función de procesamiento/devolución. Además, el usuario obtiene sus propiedades como tipo, rango, valor pasado, etc. Esto simplifica enormemente la labor. Teóricamente, es posible utilizar los parámetros listos de los elementos GUI como otros parámetros de usuario, vinculándolos directamente a la lógica de negociación. Por ejemplo, lote, trailing stop, toma de beneficios y otros, no desde sus propias variables, sino desde los campos de configuración responsables de sus valores.

Algunas conclusiones generales:

1. La presencia de un control gráfico en un programa = la presencia de un parámetro del programa preparado + sus propiedades + la función de devolver/establecer el valor.

2. 2. Cuantos más controles se coloquen en las ventanas del programa de interfaz, más parámetros intervienen en la lógica comercial y en la entrada/salida de información comercial.

3. Cuantos más parámetros y ventanas - mayor control y mayor ancho de banda de salida de datos de mercado (sin perjuicio de la automatización).

4. Cuanto mayor sea el control y más amplio sea el ancho de banda de salida de datos de mercado: mejor será el conocimiento del operador.

5. 5.Conocimiento multiplicado por automatización y control = aumento de las oportunidades para el operador.

Debo añadir que la automatización suele oponerse al control manual. Dicen que tener una interfaz gráfica significa operar manualmente. Pero no es así. La interfaz de software no excluye la automatización, sino que la amplía, añadiéndole un "gradiente": abre tres opciones: control manual, negociación semiautomática y modo autónomo.

Todo lo que tiene que hacer un operador es seleccionar una opción.

Es fácil crear una ventana para este fin.

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


2. Pasemos a la aplicación técnica de la vinculación de los parámetros de los controles.

Veamos algunos ejemplos prácticos:

1. Abramos una ventana de configuración familiar:

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

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



2. Abramos el archivo API y encontremos los elementos de la ventana abierta dentro de la función On_Gui_Event():




Recordatorio: Todos los eventos de control entran en la función On_Gui_Event();

En este sentido, escribiremos algunos de los enlaces de los parámetros dentro de esta función, y otros fuera de su cuerpo.


1. Establezcamos una conexión entre el campo con botones (S_EDIT) "Girar el valor" y el deslizador (H_SLIDER) "Girar el valor":

  • Busque el campo con botones "Girar el valor" en el archivo API.
  • Gire el valor hacia el control deslizante "Girar el valor".

*(nota importante: las funciones de elementos y ventanas deben moverse del archivo UIDATA a la parte inferior del archivo API para que funcione intellisense. en la próxima versión se imprimirán allí).
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;

Resultado: cambiamos el valor del campo con los botones, y el deslizador se mueve solo.

(*Importante - el deslizador sólo puede moverse dentro de su rango (en este caso, de 0 a 100). En caso de exceder el rango, el valor no cambia, pero se muestra un error en el registro).


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

3. Vamos a invertir los papeles. El deslizador controlará el valor en el campo de entrada:

  • Encuentre el deslizador "Roll the value" en el archivo API.
  • Escribe el valor enviando al campo con botones "Girar el valor".
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;

Resultado: Al mover el control deslizante, el campo con botones cambia el valor de forma sincronizada.


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


4. Escribamos el control mutuo del deslizador y del campo con botones:

  • Encuentra ambos elementos en el archivo API.
  • Escribe el envío del valor. El campo con botones envía su valor al deslizador, el deslizador envía su valor al campo con botones.

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;

Resultado: El deslizador y los campos de entrada se controlan mutuamente de forma simultánea.

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


Mañana publicaré la segunda parte de este tema con otros elementos.

 

Esto es increíble. Tengo la intención de comprobar este hilo con más detalle dado el tiempo. Pensé que mi trabajo estaba empujando el sobre de mt4 GUI pero su trabajo es el siguiente nivel.


 
Dennis Jorgenson #:

Es un material impresionante. Tengo la intención de explorar este tema con más detalle cuando tengo tiempo. Pensé que mi trabajo estaba empujando los límites de mt4 GUI, pero su trabajo es el siguiente nivel.


¡Muchas gracias por sus amables palabras!

 

11. Parámetros vinculantes de elementos de diferentes tipos.

12. Continuación del tema.

Parte 2.

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

Veamos si podemos aplicar el método de vinculación mostrado a otros elementos. Por ejemplo, a las casillas de verificación.

1. Hagamos que el checkbox superior bloquee y desbloquee el checkbox que tiene debajo:


Para ello:

1. Busquemos la casilla de verificación"Establecer una opción" en el archivo API.

2. 2. Escribamos una llamada a una función para la casilla"Establecer otra opción" que bloquee/desbloquee.

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

Resultado: la casilla de verificación se bloquea y desbloquea según lo previsto:

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


2. Ahora, hagamos que la casilla de verificación bloquee y desbloquee las dos casillas de verificación situadas debajo de ella:

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;

Resultado: la casilla de verificación bloquea y desbloquea las dos casillas de verificación que tiene debajo:


Así es como ocurrió en la dinámica:

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


3. Ahora vamos a resolver el problema que se muestra en el siguiente diagrama: las casillas de verificación deben bloquear y desbloquear las listas desplegables situadas frente a ellas.


Para ello:

  • Tenemos que encontrar estas casillas de verificación en el archivo API.
  • Escribir cadenas de bloqueo/desbloqueo para los elementos de destino.

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;

Resultado: las casillas de verificación bloquean las listas desplegables y se bloquean a sí mismas con la casilla de verificación principal:

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


4. Pasemos a la siguiente tarea: las listas desplegables deben traducir el valor seleccionado por el usuario a un campo de otra ventana.


Para ello:

  • Es necesario encontrar las listas desplegables en el fichero API.
  • Pasar el valor al campo de texto de otra ventana en el evento de selección del usuario.
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;


*Resultado: ambas listas desplegables envían con éxito sus valores a los campos de entrada de la ventana opuesta:

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


5. En este diagrama se muestra la siguiente tarea: Necesita que los botones de radio que están conmutados envíen su nombre a los campos de entrada de enfrente.



Para ello:

  • Vamos a encontrar el lugar donde estos botones de radio están escritos en el archivo API.
  • Escribamos una llamada a la función del campo de entrada requerido y enviémosle el nombre del botón de radio en el evento de selección del usuario.

*Nota importante: los botones de radio se activan porque se les aplicó el operador SWITCH en el código KIB. Por lo tanto, tienen un parámetro común para todos ellos y están en el archivo API en el mismo caso.

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

Resultado: Al conmutar los botones cambia el texto del campo de entrada.*Hay un pequeño problema técnico con esta opción. Será corregido en la próxima versión.

La segunda parte está terminada.

En la tercera parte trabajaremos con la tabla.

 


La parte final del tema de la vinculación de parámetros.

Vamos a pasar los valores de los parámetros de los elementos a las celdas de la tabla.

Esquema:



Solución:

  • Busquemos los elementos necesarios en el fichero API.
  • En cada uno de ellos escribamos pasando el valor a la celda de tabla asignada.

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;

Resultado: los valores se colocan de forma segura en las celdas de la tabla seleccionadas.


Como se puede ver en los ejemplos anteriores, hemos desarrollado una solución simple y conveniente. Espero que la gente la encuentre útil.


Con esto concluimos el tema de la vinculación de parámetros de elementos.

 

Quedan por tratar los siguientes temas:

12. Obtener/establecer mediante programación los límites de valor del campo deslizante y del botón(_V_MIN, _V_MAX, _V_STEP, _DIGITS).

13. Consultar el estado de los elementos(_GET_STATE).

14. Vinculación de los colores del texto y del marco a los límites de los valores espaciados.

15. Orientación en el archivo API.


Adición de un tema:

16. Realización de la lógica del programa de aparición de ventanas de mensajes y avisos.