Galleria di interfacce utente scritte in MQL - pagina 65

 
Реter Konow #:
Impostazione dellostatoON, OFF, LOCK_ON, LOCK_OFF, LOCK, UNLOCK per diversi elementi

Come ottenere lo stato on/off di un pulsante?

 
hini #:

Come ottenere lo stato on/off del pulsante?

Questo è il prossimo argomento. Lo affronteremo oggi.

Va aggiunto che gli elementi di questa GUI sono disegnati, quindi il metodo standard per ottenere lo stato ObjectGetInteger(0, "button1", OBJPROP_STATE); non funzionerà.

Inoltre, vorrei ricordare che gli eventi degli elementi, compresi i pulsanti, vengono inviati al file API.

 

Un elenco generale di argomenti da considerare:

1. Orientamento nell'elenco di intellisense e selezione della funzione della finestra giusta.

2. Apertura e chiusura programmatica delle finestre.

3. Orientarsi nell'elenco di intellisense e selezionare l'elemento giusto nella finestra giusta.

4. Navigare negli elenchi di proprietà dei singoli elementi.

5. Parsing del nome di un elemento e funzione wrapper della finestra.

6. restituzione del valore del parametro di un elemento selezionato a una variabile del suo tipo. Considerare tre tipi di elementi diversi.

7. Impostazione di valori nei parametri di diversi tipi di elementi. Vediamo come appariranno i valori nelle finestre dell'interfaccia di questi elementi.

8. Restituzione dei valori dei parametri di un elemento, modifica e inoltro del valore a un altro elemento. Considerare diversi tipi di elementi e valori e testare l'inoltro tra diversi tipi di elementi in diverse finestre.

9. Restituzione del valore precedente (_V_LAST). Quando e in quali casi è richiesto l'ultimo valore (da non confondere con il valore corrente).

10. Testare l'impostazione degli stati ON/OFF/LOCK_ON/LOCK_OFF/LOCK/UNLOCK per diversi tipi di elementi.

11. Proviamo a collegare e sincronizzare le modifiche dei valori di elementi di tipo diverso: ad esempio, campo di input con pulsanti e cursore. Supponiamo che quando il valore di un elemento (manuale o software) cambia, il valore del secondo elemento cambi di conseguenza.

12. Proviamo a reimpostare programmaticamente i confini dell'intervallo dello slider e del campo di input con pulsanti tramite funzioni wrapper. Non ho avuto il tempo di testarlo, ma qualcosa mi suggerisce che funzionerà. Comunque, vediamo.

13. Proviamo a restituire gli stati degli elementi tramite funzioni wrapper. È inclusa nella funzionalità, ma non ho avuto il tempo di testarla. Quindi vedremo... Il risultato è sconosciuto.

14. Otteniamo e impostiamo i colori per il testo e le basi degli elementi. Possiamo provare ad associare questi colori ad alcuni semplici eventi o confini di valori.

15. Vi spiegherò meglio come navigare e leggere la nuova stampa del file API.

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

Gli argomenti già trattati sono evidenziati in giallo.


Oggi faremo un ripasso:

11. Sincronizzazione (collegamento) della modifica dei valori di elementi di tipo diverso: ad esempio, campo di input con pulsanti e cursore. In modo che quando si cambia il valore di un elemento (manuale o software), il valore del secondo elemento cambierà di conseguenza.

12. Proviamo a reimpostare programmaticamente i confini dell'intervallo del cursore e del campo di input con pulsanti tramite funzioni wrapper. Non ho avuto il tempo di testarlo, ma qualcosa mi suggerisce che funzionerà. Comunque, vediamo.

13. Proviamo a restituire gli stati degli elementi tramite funzioni wrapper. È inclusa nella funzionalità, ma non ho avuto il tempo di testarla. Quindi vedremo... Il risultato è sconosciuto.

Документация по MQL5: Основы языка / Операторы / Оператор возврата return
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
  • www.mql5.com
Оператор return прекращает выполнение текущей функции и возвращает управление вызвавшей программе. Результат вычисления выражения возвращается...
 
Il tema è grande, con molte gif e immagini. Richiede molto tempo...
 

11. Legame di parametri di elementi di tipo diverso.

Chi è attento ha notato che in una GUI a più finestre, elementi diversi sono spesso collegati da valori di parametri, proprietà e stati. Ad esempio:

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

  • Il testo inserito appare improvvisamente in elementi di altre finestre.
  • Un'impostazione regolabile con i pulsanti +/- modifica la posizione di un cursore o di un numero in un campo.
  • Il campo di testo traduce una stringa di caratteri in una cella di tabella di un'altra finestra.
  • Un'opzione di elenco a discesa modifica il colore o il carattere degli elementi.
  • Una casella di controllo cliccata blocca un gruppo di pulsanti di opzione.
  • Ecc.

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

Si potrebbe pensare che ci sia una connessione invisibile tra elementi da qualche parte. E in effetti c'è. Ma è invisibile solo per un osservatore esterno. Per uno sviluppatore è abbastanza ovvio e oggi lo considereremo in dettaglio.

1. La connessione degli elementi ha due aspetti:

  • Logico - ogni programma ha dei parametri i cui valori dipendono direttamente o indirettamente e si sovrascrivono l'un l'altro.Nei programmi con interfaccia grafica il collegamento è tracciato visivamente .
  • Tecnico - tutti i parametri sono collegati da algoritmi interni al programma.

La realizzazione tecnica dei collegamenti è semplificata dalla presenza di un motore grafico.

Mi spiego meglio:

In un Expert Advisor convenzionale, ogni parametro viene inventato, nominato, memorizzato ed elaborato dall 'utente. Si tratta di un lavoro di routine che non può essere aggirato. Tuttavia, se si utilizza un motore grafico, gli elementi creati nel costruttore ricevono automaticamente il parametro insieme alla posizione di memorizzazione e alla funzione di elaborazione/ritorno. Inoltre, l'utente riceve le loro proprietà, come il tipo, l'intervallo, il valore passato, ecc. Questo semplifica notevolmente il lavoro. In teoria, è possibile utilizzare i parametri già pronti degli elementi della GUI come altri parametri utente, collegandoli direttamente alla logica di trading. Ad esempio, il lotto, il trailing stop, il take profit e altri ancora, non vengono ricavati dalle loro stesse variabili, ma dai campi di impostazione responsabili dei loro valori.

Alcune conclusioni generali:

1. La presenza di un controllo grafico in un programma = la presenza di un parametro del programma già pronto + le sue proprietà + la funzione di restituzione/impostazione del valore.

2. Più controlli sono collocati nelle finestre del programma di interfaccia, più parametri sono coinvolti nella logica di trading e nell'input/output delle informazioni di trading.

3. Maggiore è il numero di impostazioni e di finestre, maggiore è il controllo e lalarghezza di banda dell'output dei dati di mercato (fatta salva l'automazione).

4. Maggiore è il controllo e più ampia è la larghezza di banda dei dati di mercato in uscita, migliore è la consapevolezza del trader.

5. Consapevolezza moltiplicata per automazione e controllo = aumento delle opportunità per i trader.

Devo aggiungere che l'automazione è spesso contrapposta al controllo manuale. Si dice che avere un'interfaccia grafica significhi fare trading manuale. Ma non è così. L'interfaccia software non esclude ma espande l'automazione, aggiungendovi un "gradiente" - apre tre opzioni: controllo manuale, trading semiautomatico e modalità autonoma.

Tutto ciò che il trader deve fare è selezionare un'opzione.

Per carità, è facile creare una finestra a questo scopo.

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


2. Passiamo all'implementazione tecnica dei parametri vincolanti dei controlli.

Consideriamo alcuni esempi pratici:

1. Apriamo una finestra di impostazioni già nota:

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

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



2. Apriamo il file API e troviamo gli elementi della finestra aperta all'interno della funzione On_Gui_Event():




Ricordiamo: tutti gli eventi di controllo entrano nella funzione On_Gui_Event();

A questo proposito, scriveremo alcuni dei collegamenti ai parametri all'interno di questa funzione e altri al di fuori del suo corpo.


1. Stabiliamo un collegamento tra il campo con i pulsanti (S_EDIT) "Gira il valore" e il cursore (H_SLIDER) "Gira il valore":

  • Trovare il campo con i pulsanti "Gira il valore" nel file API.
  • Far girare il valore sul cursore "Ruota il valore".

*(nota importante: le funzioni degli elementi e delle finestre devono essere spostate dal file UIDATA al fondo del file API per far funzionare intellisense. nella prossima versione saranno stampate lì).
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;

Risultato: cambiamo il valore del campo con i pulsanti e il cursore si muove da solo.

(*Importante: il cursore può muoversi solo all'interno del suo intervallo (in questo caso, da 0 a 100). In caso di superamento dell'intervallo, il valore non cambia, ma viene visualizzato un errore nel log).


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

3. Invertiamo i ruoli. Il cursore controllerà il valore del campo di input:

  • Trovare il cursore "Roll the value" nel file API.
  • Scrivere l'invio del valore al campo con i pulsanti "Gira il valore".
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;

Risultato: quando si sposta la maniglia del cursore, il campo con i pulsanti cambia il valore in modo sincrono.


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


4. Scriviamo il controllo reciproco del cursore e del campo con pulsanti:

  • Trovare entrambi gli elementi nel file API.
  • Scrivere l'invio del valore. Il campo con pulsanti invia il suo valore al cursore, il cursore invia il suo valore al campo con pulsanti.

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;

Risultato: il cursore e i campi di input si controllano a vicenda simultaneamente.

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


Domani pubblicherò la seconda parte di questo tema con altri elementi.

 

Questo materiale è fantastico! Ho intenzione di controllare questo thread in modo più dettagliato con il tempo a disposizione. Pensavo che il mio lavoro stesse superando i limiti della GUI di mt4, ma il vostro lavoro è di livello superiore.


 
Dennis Jorgenson #:

Questo è un materiale fantastico! Ho intenzione di approfondire questo argomento quando avrò tempo. Pensavo che il mio lavoro stesse superando i limiti della GUI di mt4, ma il vostro lavoro è di livello superiore.


Grazie mille per le tue gentili parole!

 

11. Parametri di vincolo di elementi di tipo diverso.

Continuazione dell'argomento.

Parte 2.

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

Vediamo se possiamo applicare il metodo di binding mostrato ad altri elementi. Ad esempio, alle caselle di controllo.

1. Facciamo in modo che la casella di controllo superiore si blocchi e sblocchi quella sottostante:


Per fare questo:

1. Troviamo la casella di controllo"Imposta un'opzione" nel file API.

2. Scriviamo una chiamata di funzione per la casella di controllo"Imposta un'altra opzione" che deve bloccare/sbloccare.

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

Risultato: la casella di controllo viene bloccata e sbloccata come previsto:

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


2. Ora facciamo in modo che la casella di controllo blocchi e sblocchi le due caselle di controllo sottostanti:

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;

Risultato: la casella di controllo blocca e sblocca le due caselle di controllo sottostanti:


Ecco come è successo nella dinamica:

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


3. Ora risolviamo il problema mostrato nel diagramma seguente: le caselle di controllo devono bloccare e sbloccare gli elenchi a discesa di fronte a loro.


Per fare questo:

  • Dobbiamo trovare queste caselle di controllo nel file API.
  • Scrivere le stringhe di blocco/sblocco per gli elementi di destinazione.

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;

Risultato: le caselle di controllo bloccano gli elenchi a discesa e si bloccano con la casella di controllo principale:

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


4. Passiamo al compito successivo: gli elenchi a discesa devono tradurre il valore selezionato dall'utente in un campo di un'altra finestra.


Per fare questo:

  • È necessario trovare gli elenchi a discesa nel file API.
  • Passare il valore alcampo di testo di un'altra finestra sull'evento di selezione dell'utente.
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;


*Risultato: entrambi gli elenchi a discesa inviano con successo i loro valori ai campi di input della finestra opposta:

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


5. Il seguente compito è mostrato in questo diagramma: è necessario che i pulsanti di opzione che vengono commutati inviino il loro nome ai campi di input di fronte.



Per fare questo:

  • Troviamo il punto in cui questi pulsanti di opzione sono scritti nel file API.
  • Scriviamo una chiamata di funzione del campo di input richiesto e inviamo ad esso il nome del pulsante di opzione sull'evento di selezione dell'utente.

*Nota importante: i pulsanti di opzione sono attivati perché l'operatore SWITCH è stato applicato ad essi nel codice KIB. Pertanto, hanno un parametro comune a tutti e si trovano nel file API nello stesso 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;

Risultato: la commutazione dei pulsanti provoca la modifica del testo nel campo di input. *C'è un piccolo problema tecnico con questa opzione. Sarà risolto nella prossima versione.

La seconda parte è stata completata.

Nella terza parte lavoreremo con la tabella.

 


La parte finale dell'argomento del binding dei parametri.

Passiamo i valori dei parametri degli elementi alle celle della tabella.

Schema:



Soluzione:

  • Troviamo gli elementi richiesti nel file API.
  • In ognuno di essi scriviamo il passaggio del valore alla cella di tabella assegnata.

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;

Risultato: i valori vengono inseriti in modo sicuro nelle celle di tabella selezionate.


Come si può vedere dagli esempi precedenti, abbiamo sviluppato una soluzione semplice e conveniente. Spero che la gente la trovi utile.


Questo conclude l'argomento del collegamento dei parametri degli elementi.

 

Restano da affrontare i seguenti argomenti:

12. Ottenere/impostare programmaticamente i limiti del valore del cursore e del campo del pulsante(_V_MIN, _V_MAX, _V_STEP, _DIGITS).

13. Interrogare lo stato degli elementi(_GET_STATE).

14. Collegamento dei colori del testo e della cornice ai limiti dei valori spaziati.

15. Orientamento nel file API.


Aggiunta di un tema:

16. Realizzazione della logica di programma per l'aspetto delle finestre di messaggio e di avviso.