Galleria di interfacce utente scritte in MQL - pagina 64

 
Cominciamo da una nuova pagina.
 

9. Restituisce il valore precedente di _V_LAST .

Il valore precedente di tutti i parametri viene salvato automaticamente. Per ottenerlo, è necessario chiamare la funzione elementare e passare l'identificatore _V_LAST.

Vediamo come fare in un esempio pratico:

1. Aprire la finestra desiderata:

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

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



2. Inviare un valore (stringa di caratteri) al campo di input superiore:

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

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



3. Ora inviate un'altra stringa nello stesso campo:

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

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



4. Viene restituita la stringa precedente:

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

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


5. E la inviamo al campo sottostante:

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

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


6. Riscriviamo di nuovo la riga del campo superiore:

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

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


7. Inviamo la stringa precedente al campo inferiore:

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



Risultato:

  • Nel campo superiore si trova la stringa corrente.
  • Nel campo centrale - la stringa originale.
  • Nel campo inferiore - la seconda stringa.

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

Lo stesso approccio funziona in tutti i casi.

Utilizzando l'identificatore _V_LAST , è possibile ottenere l'ultimo valore di qualsiasi elemento (se l'identificatore è prescritto nell'elenco delle singole proprietà).




In seguito, si può pensare di impostare gli stati ON/OFF e di bloccare gli elementi.

 
Реter Konow #:
Lo stesso approccio funziona in tutti i casi.

Include anche lo stato ON/OFF?

 
hini #:

Include anche uno stato ON/OFF?

_V_LAST restituisce il valore dell'ultimo parametro di qualsiasi elemento.

È possibile utilizzare l'approccio mostrato sopra per altri elementi. Mostrerò l'esempio di un cursore e di un campo con pulsanti dopo l'argomento della commutazione degli stati degli elementi.

Quando si guarda alla sincronizzazione, un campo restituirà il valore corrente del cursore e l'altro restituirà il valore precedente.

 

10.Impostazione degli statiON, OFF, LOCK_ON, LOCK_OFF, LOCK, UNLOCKper diversi elementi:

Esistono tipi di elementi che hanno statiON e OFF, come ad esempio i pulsanti e le caselle di controllo. Tuttavia, esistono molti elementi che si trovano sempre in uno stato neutro. Semprespenti. Che cosa hanno in comune con i pulsanti e le caselle di controllo? Entrambi possono esserebloccati e sbloccati. La differenza è che ipulsanti e le caselle di controllo sono bloccati in due stati: acceso e spento, mentre gli altri elementi sono solo in statoneutro. A causa di queste differenze, esistono diversi identificatori che svolgono la stessa funzione: bloccano e sbloccano gli elementi.

Consideriamo alcuni esempi pratici:

1. Apriamo la finestra delle impostazioni con pulsanti e caselle di controllo:

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



2. Impostiamo lo stato abilitato per il pulsante:

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

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

Risultato: il pulsante è passato allo stato premuto.


3. Ora impostiamo lo statoON per le caselle di controllo:

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

Risultato: le caselle di controllo sono passate allo stato attivato.

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


4. Ora rimuoviamo lo stato ON dal pulsante "Start" utilizzando l'identificatoreOFF:

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

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

Risultato: il pulsante è tornato allo stato neutro.


5. Riportiamo lo stato neutroOFF alle caselle di controllo :

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

Risultato: le caselle di controllo sono tornate allo stato neutro.


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


Passiamo ora a bloccare il pulsante e le caselle di controllo in due possibili stati: neutro e attivato:


1. Blocchiamo il pulsante nello stato neutro:

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

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

Risultato: pulsante bloccato in stato neutro.

(*guasto, sarà risolto).


2. Bloccare le caselle di controllo nello stato 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);
   //------------------------------------------------

Risultato: le caselle di controllo sono bloccate in stato neutro.


(*il problema della scomparsa del testo in stato di blocco per alcuni elementi sarà risolto nella prossima versione).


3. Bloccare il pulsante e le caselle di controllo nello stato premuto utilizzando l'identificatoreLOCK_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);
   //------------------------------------------------

Risultato: il pulsante e le caselle di controllo sono bloccati nello stato premuto.



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

Ora proviamo i comandiLOCK e UNLOCK per gli elementi che sono sempre nello stato neutro.

Ad esempio, prendiamo gli elementiC_LIST, D_LIST, H_SLIDER e S_EDIT nella stessa finestra:



1. Blocchiamo tutti e quattro gli elementi contemporaneamente:

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

Risultato: gli elementi C_LIST, D_LIST, H_SLIDER e S_EDIT sono bloccati .


2. Sbloccare gli elementi:

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

Risultato: gli elementi sono stati sbloccati.

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

Con questi esempi concludiamo l'argomento, poiché gli altri elementi vengono bloccati e sbloccati allo stesso modo.

...

Passiamo ora alla sincronizzazione dei valori dei parametri.

 
Molto bene, molto pratico.
 
hini #:
Molto bene, molto pratico.

Grazie! La valutazione degli utenti è molto importante per un ulteriore sviluppo.

 
Avendo valutato la quantità di materiale per il prossimo argomento, penso che sarebbe meglio rimandarlo a domani, in modo da ricordare meglio gli argomenti precedenti.
 

Segni di una buona GUI.

Minimalismo: minimo spazio occupato nella grafica, assenza di elementi insignificanti e di informazioni che distraggono l'attenzione.

Funzionalità: tutto lo spazio occupato deve essere il più utile possibile, tutte le funzioni devono essere intuitive.

Ergonomia: gli elementi utilizzati più di frequente devono essere accessibili e di grandi dimensioni.

Estetica: allineamento, dimensioni standard, stile uniforme, combinazione di colori.

 
Ivan Titov #:

Segni di una buona interfaccia grafica.

Minimalismo: minimo spazio occupato nella grafica, assenza di elementi e informazioni insignificanti che distraggono l'attenzione.

Funzionalità: tutto lo spazio occupato deve essere il più utile possibile, tutte le funzioni devono essere intuitive.

Ergonomia: gli elementi utilizzati più di frequente devono essere accessibili e di grandi dimensioni.

Estetica: allineamento, dimensioni standard, stile uniforme, combinazione di colori.


Grazie per aver mostrato l'esempio. Sono completamente d'accordo con le tue tesi. Spero di raggiungere questo livello di sviluppo prima o poi.