Galeria de UIs escritas em MQL - página 65

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

Como obter o estado ligado/desligado de um botão?

 
hini #:

Como obter o estado ligado/desligado do botão?

Esse é o próximo tópico. Vamos analisá-lo hoje.

Devo acrescentar que os elementos dessa GUI são desenhados, portanto, o método padrão de obter o estado ObjectGetInteger(0, "button1", OBJPROP_STATE); não funcionará.

Além disso, gostaria de lembrá-lo de que os eventos dos elementos, incluindo os botões, são enviados para o arquivo de API.

 

Uma lista geral de tópicos a serem considerados:

1. orientação na lista do intellisense e seleção da função da janela correta.

2. Abrir e fechar janelas de forma programática.

3. orientação na lista do intellisense e seleção do elemento certo na janela certa.

4. Navegar pelas listas de propriedades de elementos individuais.

5. Analisar o nome de uma função de elemento e janela.

6. Retorno do valor do parâmetro de um elemento selecionado para uma variável de seu tipo. Considerar três tipos de vários elementos diferentes.

7. Definir valores nos parâmetros de diferentes tipos de elementos. Vamos ver como os valores aparecerão nas janelas de interface desses elementos.

8. Retornar os valores dos parâmetros de um elemento, modificar e encaminhar esse valor para outro elemento. Considere diferentes tipos de elementos e valores e teste o encaminhamento entre diferentes tipos de elementos em diferentes janelas.

9. Retornar o valor anterior (_V_LAST). Quando e para quais casos o último valor é necessário (não confundir com o valor atual).

10. Teste a configuração dos estados ON/OFF/LOCK_ON/LOCK_OFF/LOCK/UNLOCK para diferentes tipos de elementos.

11. Vamos tentar vincular e sincronizar as alterações de valores de elementos de tipos diferentes: por exemplo, campo de entrada com botões e controle deslizante. Vamos supor que, quando o valor de um elemento (manual ou de software) for alterado, o valor do segundo elemento será alterado de forma correspondente.

12. Vamos tentar redefinir programaticamente os limites do intervalo do controle deslizante e do campo de entrada com botões por meio de funções de wrapper. Não tive tempo de testar isso, mas algo sugere que funcionará. No entanto, vamos ver.

13. Vamos tentar retornar os estados dos elementos por meio de funções de wrapper. Isso está incluído na funcionalidade, mas não tive tempo de testá-la. Então, vamos ver... O resultado é desconhecido.

14. Vamos obter e definir cores para texto e bases de elementos. Podemos tentar associar essas cores a alguns eventos simples ou limites de valores.

15. Vou lhe dizer mais sobre como navegar e ler a impressão do novo arquivo da API.

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

Os tópicos que já abordamos estão destacados em amarelo.


Hoje vamos revisar:

11. Sincronização (vinculação) da alteração de valores de elementos de tipos diferentes: por exemplo, campo de entrada com botões e controle deslizante. Assim, ao alterar o valor de um elemento (manual ou de software), o valor do segundo elemento será alterado de forma correspondente.

12. Vamos tentar redefinir programaticamente os limites do intervalo do controle deslizante e do campo de entrada com botões por meio de funções de wrapper. Não tive tempo de testar isso, mas algo sugere que funcionará. No entanto, vamos ver.

13. Vamos tentar retornar os estados dos elementos por meio de funções de wrapper. Isso está incluído na funcionalidade, mas não tive tempo de testá-la. Então, vamos ver... O resultado é desconhecido.

Документация по MQL5: Основы языка / Операторы / Оператор возврата return
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
  • www.mql5.com
Оператор return прекращает выполнение текущей функции и возвращает управление вызвавшей программе. Результат вычисления выражения возвращается...
 
O tema é grande, com muitos gifs e imagens. Consome muito tempo...
 

11. Vinculação de parâmetros de elementos de tipos diferentes.

Uma pessoa atenta notou que, em uma GUI com várias janelas, diferentes elementos são frequentemente vinculados por valores de parâmetros, propriedades e estados. Por exemplo:

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

  • O texto inserido aparece repentinamente em elementos de outras janelas.
  • Uma configuração ajustável com botões +/- altera a posição de um controle deslizante ou de um número em um campo.
  • O campo de texto traduz uma cadeia de caracteres em uma célula de tabela de outra janela.
  • Uma opção de lista suspensa altera a cor ou a fonte dos itens.
  • Uma caixa de seleção clicada bloqueia um grupo de botões de rádio.
  • Etc.

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

Você pensaria que há uma conexão de elemento invisível acontecendo em algum lugar. E realmente existe. Mas ela é invisível apenas para um observador externo. Para um desenvolvedor, ela é bastante óbvia e hoje vamos analisá-la em detalhes.

1. A conexão de elementos tem dois lados:

  • Lógico - qualquer programa tem parâmetros cujos valores dependem direta ou indiretamente e se sobrepõem uns aos outros.Em programas com uma interface gráfica, a conexão é traçada visualmente .
  • Técnico - todos os parâmetros são vinculados por algoritmos internos do programa.

A realização técnica das conexões é simplificada devido à presença de um mecanismo gráfico.

Deixe-me explicar:

Em um Expert Advisor convencional, cada parâmetro é inventado, nomeado, armazenado e processado pelo usuário. Esse é um trabalho de rotina que não pode ser contornado. Entretanto, no caso do uso de um mecanismo gráfico, os itens criados no construtor recebem automaticamente o parâmetro juntamente com o local de armazenamento e a função de processamento/retorno. Além disso, o usuário obtém suas propriedades, como tipo, intervalo, valor passado etc. Isso simplifica muito o trabalho. Teoricamente, é possível usar parâmetros prontos de elementos da GUI como outros parâmetros do usuário, vinculando-os diretamente à lógica de negociação. Por exemplo, lote, trailing stop, take profit e outros, não a partir de suas próprias variáveis, mas a partir dos campos de configuração responsáveis por seus valores.

Algumas conclusões gerais:

1. A presença de um controle gráfico em um programa = a presença de um parâmetro de programa pronto + suas propriedades + a função de retornar/definir o valor.

2. Quanto mais controles forem colocados nas janelas do programa de interface, mais parâmetros estarão envolvidos na lógica de negociação e na entrada/saída de informações de negociação.

3. quanto mais configurações e janelas, maior o controle e maior a largura de banda da saída de dados de mercado (sem prejuízo da automação).

4. Quanto maior o controle e maior a largura de banda da saída de dados do mercado, melhor será a percepção do trader.

5. Consciência multiplicada por automação e controle = aumento das oportunidades do trader.

Devo acrescentar que a automação muitas vezes se opõe ao controle manual. Dizem que ter uma interface gráfica significa negociação manual. Mas não é assim. A interface do software não exclui, mas expande a automação, acrescentando um "gradiente" a ela - ela abre três opções: controle manual, negociação semiautomática e modo autônomo.

Tudo o que o operador precisa fazer é selecionar uma opção.

É muito fácil criar uma janela para esse fim.

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


2. Vamos passar para a implementação técnica dos parâmetros de vinculação dos controles.

Vamos considerar alguns exemplos práticos:

1. vamos abrir uma janela de configurações familiar:

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

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



2. abra o arquivo API e encontre os elementos da janela aberta dentro da função On_Gui_Event():




Lembrete: todos os eventos de controle entram na função On_Gui_Event();

Nesse sentido, escreveremos alguns dos links de parâmetros dentro dessa função e outros fora de seu corpo.


1. Vamos estabelecer uma conexão entre o campo com botões (S_EDIT) "Spin the value" e o controle deslizante (H_SLIDER) "Roll the value":

  • Localize o campo com os botões "Spin the value" (Girar o valor) no arquivo de API.
  • Gire o valor para o controle deslizante "Roll the value".

*(Observação importante: as funções de elementos e janelas devem ser movidas do arquivo UIDATA para a parte inferior do arquivo de API para que o intellisense funcione.)
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: alteramos o valor no campo com os botões e o controle deslizante se move sozinho.

(*Importante: o controle deslizante pode se mover somente dentro de seu intervalo (nesse caso, de 0 a 100). Se o intervalo for ultrapassado, o valor não será alterado, mas um erro será exibido no registro).


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

3. Vamos fazer a inversão de papéis. O controle deslizante controlará o valor no campo de entrada:

  • Encontre o controle deslizante "Roll the value" no arquivo da API.
  • Escreva o envio do valor para o campo com botões "Spin the value" (Girar o 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: Ao mover a alça do controle deslizante, o campo com botões altera o valor de forma síncrona.


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


4. Vamos escrever o controle mútuo do controle deslizante e do campo com botões um pelo outro:

  • Localize os dois elementos no arquivo de API.
  • Escreva o envio do valor. O campo com botões envia seu valor para o controle deslizante, e o controle deslizante envia seu valor para o campo com botões.

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: O controle deslizante e os campos de entrada controlam um ao outro simultaneamente.

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


Amanhã publicarei a segunda parte desse tema com outros elementos.

 

Esse material é fantástico! Pretendo dar uma olhada neste tópico com mais detalhes quando tiver tempo. Eu achava que meu trabalho estava ultrapassando os limites da GUI do mt4, mas o seu trabalho é de outro nível.


 
Dennis Jorgenson #:

Este é um material incrível! Pretendo explorar esse tópico com mais detalhes quando tiver tempo. Achei que meu trabalho estava ultrapassando os limites da GUI do mt4, mas o seu trabalho é de outro nível.


Muito obrigado por suas palavras gentis!

 

11. Parâmetros de vinculação de elementos de diferentes tipos.

Continuação do tópico.

Parte 2.

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

Vamos ver se podemos aplicar o método de vinculação mostrado a outros elementos. Por exemplo, a caixas de seleção.

1. Vamos fazer com que a caixa de seleção superior bloqueie e desbloqueie a caixa de seleção abaixo dela:


Para fazer isso:

1. Vamos localizar a caixa de seleção"Set an option" no arquivo API.

2. Escreva uma chamada de função para a caixa de seleção"Set another option" que deve bloquear/desbloquear.

//===========================================================================================================================
//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: a caixa de seleção é bloqueada e desbloqueada como pretendido:

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


2) Agora, vamos fazer com que a caixa de seleção bloqueie e desbloqueie as duas caixas de seleção abaixo dela:

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: a caixa de seleção bloqueia e desbloqueia as duas caixas de seleção abaixo dela:


Foi assim que aconteceu na dinâmica:

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


3. agora vamos resolver o problema mostrado no diagrama abaixo: as caixas de seleção devem bloquear e desbloquear as listas suspensas opostas a elas.


Para fazer isso:

  • Precisamos encontrar essas caixas de seleção no arquivo API.
  • Escrever strings de bloqueio/desbloqueio para os itens 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: as caixas de seleção bloqueiam as listas suspensas e se bloqueiam com a caixa de seleção principal:

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


4. Vamos passar para a próxima tarefa: as listas suspensas devem traduzir o valor selecionado pelo usuário em um campo de outra janela.


Para fazer isso:

  • É necessário localizar as listas suspensas no arquivo API.
  • Passe o valor para o campo de texto de outra janela no evento de seleção do usuário.
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 as listas suspensas enviam com sucesso seus valores para os campos de entrada na janela oposta:

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


5. A seguinte tarefa é mostrada neste diagrama: Você precisa que os botões de opção que estão alternados enviem seus nomes para os campos de entrada opostos.



Para fazer isso:

  • Vamos encontrar o local onde esses botões de opção estão escritos no arquivo da API.
  • Vamos escrever uma chamada de função do campo de entrada necessário e enviar o nome do botão de opção para ele no evento de seleção do usuário.

*Observação importante: os botões de rádio são alternados porque o operador SWITCH foi aplicado a eles no código KIB. Portanto, eles têm um parâmetro comum para todos eles e estão no arquivo de API no mesmo 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: a alternância dos botões faz com que o texto no campo de entrada seja alterado. *Há um pequeno problema técnico com essa opção. Eleserá corrigido na próxima versão.

A segunda parte está concluída.

Na terceira parte, trabalharemos com a tabela.

 


A parte final do tópico de vinculação de parâmetros.

Vamos passar os valores dos parâmetros do elemento para as células da tabela.

Esquema:



Solução:

  • Vamos encontrar os elementos necessários no arquivo API.
  • Em cada um deles, vamos escrever passando o valor para a célula da tabela atribuída.

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: os valores são colocados com segurança nas células da tabela selecionadas.


Como você pode ver nos exemplos acima, desenvolvemos uma solução simples e conveniente. Espero que ela seja útil para as pessoas.


Isso conclui o tópico de vinculação de parâmetros de elementos.

 

Os tópicos a seguir ainda precisam ser abordados:

12. Obter/definir programaticamente os limites de valor do controle deslizante e do campo de botão(_V_MIN, _V_MAX, _V_STEP, _DIGITS).

13. Consultar o status dos elementos(_GET_STATE).

14. Vinculação das cores do texto e do quadro aos limites de valores espaçados.

15. Orientação no arquivo API.


Adição de um tema:

16. Realização da lógica do programa de aparência das janelas de mensagem e aviso.