Galeria de UIs escritas em MQL - página 64

 
Vamos começar em uma nova página.
 

9. Retorna o valor anterior de _V_LAST .

O valor anterior de todos os parâmetros é salvo automaticamente. Para obtê-lo, você precisa chamar a função de elemento e passar o identificador _V_LAST.

Vamos ver como isso é feito em um exemplo prático:

1. abra a janela desejada:

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

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



2. Envie um valor (cadeia de caracteres) para o campo de entrada superior:

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

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



3. Agora, envie outra string para o mesmo campo:

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

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



4. Recebemos a string anterior de volta:

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

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


5. E a enviamos para o campo abaixo:

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

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


6. Vamos reescrever a linha do campo superior novamente:

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

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


7. Vamos enviar a string anterior para o 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:

  • O campo superior é a string atual.
  • No campo do meio - a string original.
  • No campo inferior - a segunda string.

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

A mesma abordagem funciona em todos os casos.

Usando o identificador _V_LAST , você pode obter o último valor de qualquer elemento (se o identificador for prescrito na lista de propriedades individuais).




Em seguida, considere a definição de estados ON/OFF e o bloqueio de elementos.

 
Реter Konow #:
A mesma abordagem funciona em todos os casos.

Ela também inclui o status ON/OFF?

 
hini #:

Ele também inclui um estado ON/OFF?

_V_LAST retorna o último valor de parâmetro de qualquer elemento.

Você pode usar a abordagem mostrada acima para outros elementos. Mostrarei o exemplo de um controle deslizante e de um campo com botões após o tópico sobre alternância de estados de elementos.

Quando analisarmos a sincronização, um campo retornará o valor atual do controle deslizante e o outro retornará o valor anterior.

 

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

Há tipos de elementos que têm estadosON e OFF, sendo o exemplo clássico os botões e as caixas de seleção. No entanto, há muitos elementos que estão sempre em um estado neutro. SempreOFF. O que eles têm em comum com os botões e as caixas de seleção? Ambos podem serbloqueados e desbloqueados. A diferença é queos botões e as caixas de seleção são bloqueados em dois estados: ligado e desligado, enquanto os outros elementos ficam apenas no estadoneutro. Devido a essas diferenças, há vários identificadores que executam a mesma função: eles bloqueiam e desbloqueiam elementos.

Vamos considerar alguns exemplos práticos:

1. Vamos abrir a janela de configurações com botões e caixas de seleção:

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



2. Vamos definir o estado ativado para o botão:

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

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

Resultado: o botão mudou para o estado pressionado.


3) Agora, defina o estadoON para as caixas de seleção:

   //------------------------------------------------
   //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: As caixas de seleção passaram para o estado ativado.

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


4 Agora, vamos remover o estado ON do botão "Start" usando o identificadorOFF:

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

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

Resultado: o botão retornou ao estado neutro.


5. Vamos retornar o estado neutroOFF para as caixas de seleção :

   //------------------------------------------------
   //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: as caixas de seleção voltaram ao estado neutro.


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


Agora vamos bloquear o botão e as caixas de seleção em dois estados possíveis: neutro e ativado:


1. Vamos bloquear o botão no estado neutro:

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

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

Resultado: botão bloqueado no estado neutro.

(*falha, a correção será.).


2. Bloqueie as caixas de seleção no 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: as caixas de seleção estão bloqueadas em estado neutro.


(*o problema do texto que desaparece no estado bloqueado para alguns elementos será resolvido na próxima versão).


3. Bloqueie o botão e as caixas de seleção no estado pressionado usando o 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: o botão e as caixas de seleção são bloqueados no estado pressionado.



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

Agora vamos testar os comandosLOCK e UNLOCK para elementos que estão sempre no estado neutro.

Por exemplo, vamos usar os elementosC_LIST, D_LIST, H_SLIDER e S_EDIT na mesma janela:



1. Vamos bloquear todos os quatro elementos de uma 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: os elementos C_LIST, D_LIST, H_SLIDER e S_EDIT estão bloqueados .


2. Desbloqueie os 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: os elementos foram desbloqueados novamente.

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

Com esses exemplos, concluímos este tópico, pois os outros elementos são bloqueados e desbloqueados da mesma forma.

...

Em seguida, passaremos à sincronização dos valores de parâmetros.

 
Muito bom, muito prático.
 
hini #:
Muito bom, muito prático.

Muito obrigado! A avaliação do usuário é muito importante para o desenvolvimento futuro.

 
Depois de avaliar a quantidade de material para o próximo tópico, acho que seria melhor adiá-lo para amanhã, para que os tópicos anteriores sejam mais bem lembrados.