Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Pyotr, non ti capisco.
È importante che i programmatori sappiano come interagire con la GUI durante il lavoro. Ecco un esempio della mia GUI. Ho fatto clic sulla scorciatoia del tema chiaro/scuro e questo evento ha immediatamente attivato la funzione per cambiare i colori dello sfondo e le linee. Come si realizza questa interazione?
Cosa significa "L'utente NON interagirà (affatto) con il mio codice " ? Il programmatore deve interagire non con il codice, ma con gli eventi che il codice deve generare.
Bene. Cercherò di usare solo immagini per chiarezza.
1.
2.
3.
4.
Il nostro foglio delle opzioni e la casella di controllo nella finestra e il file Internal_API:
5. Esecuzione di azioni sulla finestra e sugli elementi nel codice utente:
6.
INTELLISENSE CI DICE TUTTO!!!
Proverò a fare una domanda diversa, usando come esempio lo sviluppo web. Perché la vostra GUI è scritta usando il linguaggio di markup che avete creato.
Anche lo sviluppo web ha il suo linguaggio di markup (HTML) e il suo linguaggio di stile (CSS). Se avete creato un sito web solo in HTML, potete creare controlli in puro html.
Ecco un esempio con la casella di controllo. Ma in questo caso il sito sarà morto, perché non accadrà nulla quando i controlli funzionano. Per far accadere qualcosa, è necessario inserire un gestore per ogni evento utilizzando JavaScript e la funzione addEventListener Ecco un esempio di tale gestore:https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_element_addeventlistener4 La mia domanda principale può essere riformulata: come si implementaper il programmatore il gestore di eventi generato dalla GUI quando l'utente lavora.
Come ho detto, l'ho implementato attraverso il fatto che quando la GUI viene generata programmaticamente, a ogni controllo viene assegnata la propria funzione di gestore di eventi utilizzando un puntatore a una funzione.
OK.
Proverò a fare una domanda diversa, usando come esempio lo sviluppo web. Perché la vostra GUI è scritta usando il linguaggio di markup che avete creato.
Anche lo sviluppo web ha il suo linguaggio di markup (HTML) e il suo linguaggio di stile (CSS). Se avete creato un sito web solo in HTML, potete creare controlli in puro html.
Ecco un esempio con la casella di controllo. Ma in questo caso il sito sarà morto, perché non accadrà nulla quando i controlli funzionano. Per far accadere qualcosa, è necessario inserire un gestore per ogni evento utilizzando JavaScript e la funzione addEventListener Ecco un esempio di tale gestore:https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_element_addeventlistener4 La mia domanda principale può essere riformulata: come si implementaper il programmatore il gestore di eventi generato dalla GUI quando l'utente lavora.
Come ho detto, l'ho implementato attraverso il fatto che quando la GUI viene generata programmaticamente, a ogni controllo viene assegnata la propria funzione di gestore di eventi utilizzando un puntatore alla funzione.
Nicholas, tutto funziona. Lo proverete voi stessi più tardi. Tutto è molto più semplice di quanto si pensi. Ho realizzato molte interfacce funzionanti utilizzando questa tecnologia. Quindi... Lo vedrai presto.
Nikolai, funziona. Lo proverai tu stesso più tardi. È molto più semplice di quanto pensi. Ho realizzato molte interfacce funzionanti utilizzando questa tecnologia. Quindi... Lo vedrai presto.
Ok... Aspetto.
Tuttavia, per rendere più facile la comprensione con un esempio, si prega di creare un semplice indicatore vuoto (o Expert Advisor), in cui la GUI è collegata sotto forma di un pulsante separato, quando si preme, il colore di sfondo della finestra cambia da nero a bianco e da bianco a nero. È auspicabile che il cambio di colore avvenga solo nel corpo dell'indicatore e non in uno dei file collegati.
Per semplicità di scrittura, ecco il codice della funzione che deve essere eseguita nel corpo del programma quando viene premuto il pulsante:
Ok. Aspetterò.
Tuttavia, per rendere più facile la comprensione con un esempio, si prega di creare un semplice indicatore (o Expert Advisor) vuoto, in cui la GUI è collegata sotto forma di un pulsante separato, quando si preme, il colore di sfondo della finestra cambia da nero a bianco e da bianco a nero. È auspicabile che il cambio di colore avvenga solo nel corpo dell'indicatore e non in uno dei file collegati.
Per semplicità di scrittura, ecco il codice della funzione che deve essere eseguita nel corpo del programma quando viene premuto il pulsante:
Ok. Farò l'implementazione più semplice possibile per la comprensione. Senza fronzoli).
Ok. Farò l'implementazione più semplice possibile per la comprensione. Senza fronzoli).
Ottimo! Grazie.
Nikolay, non posso scrivere una chiamata di funzione all'interno del corpo dell'indicatore, perché il suo gestore si trova nel file Internal_API.mqh.
Cioè, posso chiamare la tua funzione sull'evento della pressione del pulsante dal suo gestore in questo file. Tuttavia, posso impostare gli stati dei pulsanti in modo programmatico dal corpo dell'indicatore, ad esempio sull'evento timer. Ma in questo caso non ho bisogno di premere il pulsante. In breve, ci sono diversi elementi. Alcuni di essi possono essere gestiti all'interno del corpo dell'indicatore (per lo più elementi non interattivi, come la barra di avanzamento, ad esempio) e ci sono quelli che hanno un gestore nel file Internal_API.mqh e funzionano da lì. Anche se i loro stati possono essere impostati programmaticamente dal corpo dell'EA/indicatore.
Il vostro compito è completato. (se il quadrato bianco - click)
Codice:
Ho commentato la vostra funzione perché il compilatore imprecava. L'ho resa più semplice.
Ecco il codice nel file Internal_API.mqh
A proposito, si dovrebbe aggiungere:
Il file Internal_API.mqh contiene i gestori dei controlli ed è progettato SPECIFICAMENTE per collegarli.
Questo file è destinato all'utente e non fa parte del motore o di altro codice.
Questo file è destinato all'utente e non fa parte del motore o di altro codice.
Capisco, Peter.
Grazie. Naturalmente non è conveniente per uno sviluppatore.
C'è un sacco di codice inutile e di movimenti. Tuttavia, la variante con un puntatore a una funzione è molto meglio.