Galleria di interfacce utente scritte in MQL - pagina 41

 

Buonasera cari membri del forum.

Finalmente è arrivato il momento di rilasciare il motore e aiutare coloro che vogliono creare programmi grandi e molto belli con una ricca interfaccia grafica in MQL5. Ora questo obiettivo è a portata di mano.

E quindi:

1. La prima versione del motore. Voglio sottolineare la parola "prima". Niente è mai perfetto la prima volta. Probabilmente troverete bug che non ho notato. Non c'è problema. Non ho mai riscontrato alcun bug di cui non mi sia occupato. Tutto si risolve rapidamente.

2. Il motore non è completamente finito. Al momento, l'applicazione"condizionale-utente" (1) EA Shell v1.mq5 (scritta appositamente per testare il motore) cattura tutti gli eventi dei controlli della GUI creata. Questo rende già possibile la reazione programmatica del codice utente. Gli eventi arrivano, portano valori ai casi necessari della funzione OnGuiEvent(); è lì, nel file API, che l'utente scriverà il suo codice di reazione agli eventi dell'interfaccia.

3. È stato fatto molto lavoro sul motore. Le modifiche hanno interessato sia il livello locale che quello globale. Più avanti descriverò in dettaglio cosa ho scritto e rifatto esattamente in questo periodo. L'elenco sarà lungo.

4. Il rilascio ha istruzioni per l'installazione nel file ReadMe.txt. Tuttavia, aggiungerò delle immagini per maggiore chiarezza. Se non è chiaro, chiedete. Vi aiuterò.


In generale, prendete la release e iniziamo.

File:
 

Dopo l'installazione della nuova versione del costruttore, si dovrebbe vedere un menu contestuale aggiornato (facendo doppio clic sul grafico):


Se si vede tale menu, l'installazione è avvenuta con successo.

 

Questa installazione non è diversa da quella precedente. Gli stessi passi nello stesso ordine.

Le istruzioni sono riportate in questo blog. E anche nelle immagini:

https://www.mql5.com/ru/blogs/post/758425

KIB-DRIVE instalation instractions
KIB-DRIVE instalation instractions
  • www.mql5.com
This archive contains: //------------------------------------------------------------------------------ 1. Folder     (1) KIB 1.0
 

Vorrei menzionare separatamente il nuovo file EA Shell v1.mq5 .

Salvatelo nella cartella EAs, ma compilatelo solo dopo aver stampato il file API nel costruttore. Si tratta delle connessioni nella sua intestazione.

1. Eseguite il costruttore e l'indicatore come prima su un grafico.

2. Aprire immediatamente il menu contestuale e stampare i file UIDATA e API.

3. Trasferire questi file nella cartella di questo percorso:

#include<(2)  KIB PROJECTS\(5) USER PROJECTS\Project 1\

4. Compilare EA Shell v1.mq5 e rilasciarlo su un altro grafico.

5. Fatto.

 

Un po' di istruzioni in immagini:

1.


2.


3.


4.


5.


6.


7.


 
Piccole istruzioni per l'installazione (1) EA Shell v1.mq5...
 

1.



2.


3.



4.



5.



6.



7.


DiscussionForumPosting - Schema.org Type
  • schema.org
Schema.org Type: DiscussionForumPosting - A posting to a discussion forum.
 

Le finestre di impostazione di cui sopra sono destinate a testare la connessione e la risposta agli eventi dell'interfaccia da parte di funzionalità personalizzate.

A tale scopo, aprire il file API e scrivere le proprie chiamate.

Per impostazione predefinita, gli eventi dell'interfaccia chiamano la funzione Alert() stampando il loro identificatore e il valore del parametro sugli eventi di impatto sugli elementi.

 
Proverò la nuova versione più tardi.
 

Un elenco di correzioni e aggiornamenti in questa e nella prossima versione:

Modifiche globali:

  • Il file Internal_API è stato rinominato semplicemente ARI.
  • Tutte le definizioni e le funzioni che non sono rilevanti per il lavoro dell'utente con i controlli sono state rimosse dal file API. In parte sono state spostate nel file UIDATA.
  • Il metodo di collegamento del codice utente con i controlli è stato radicalmente modificato. L'utente avrà accesso diretto al kernel G_CORE dove sono memorizzati i controlli. L'accesso avviene tramite funzioni wrapper che vengono stampate automaticamente nel file UIDATA.
  • Ai nomi delle funzioni wrapper viene aggiunto un prefisso speciale per facilitare l'individuazione degli elementi tramite intellisense.
  • È stata aperta la possibilità di creare un menu contestuale per un'applicazione utente. È stata allocata un'area speciale nel file #include<(2) KIB PROJECTS\(1) Must be included\User section\My menu section.mqh>.
  • Aggiunta la possibilità di impostare i pulsanti nella parte destra della barra delle applicazioni dell'utente. A tale scopo è stata predisposta un'area speciale nel file #include<(2) KIB PROJECTS\ (1) Must be included\User section\ My Taskbar section.mqh>.
  • Il menu contestuale personalizzato e la barra delle applicazioni sono ora richiamati dal menu contestuale del costruttore e non interferiscono con la modifica di altre finestre:


  • Il menu contestuale utente può richiamare finestre di menu junior.

Ecco come appare dopo il salvataggio del progetto e il passaggio alla modalità applicazione utente su un altro grafico: .

  • Il comportamento delle finestre del menu contestuale è simile a quello delle applicazioni di Windows.

  • Le opzioni del menu contestuale possono richiamare funzioni o finestre. Se una voce di menu richiama una finestra, l'icona della finestra viene impostata automaticamente a sinistra.



  • Modifiche e miglioramenti locali:

  • È statorisolto un problema di salto della barra delle applicazioni quando si passa da un grafico all'altro. Ora si adatta meglio e più rapidamente al ridimensionamento della finestra.
  • Icursori funzionano meglio:
  • La scheda dei valori (S_WIDGET) accoglie sempre le cifre del valore e prende le dimensioni in base alla dimensione del testo del valore massimo (o minimo).
  • Il tabellone è posizionato su uno dei 4 lati come desiderato dall'utente (impostato dai flag).
  • Il cursore alterna qualsiasi valore in qualsiasi intervallo con qualsiasi Il cursore commuta qualsiasi valore in qualsiasi intervallo con qualsiasi numero di cifre decimali e con qualsiasi passo specificato.
  • Il numero di cifre decimali (precisione del valore) viene impostato dall'utente (parola DIGITS).
  • La dimensione del cursore e l'intervallo di valori non hanno alcun ruolo. L'algoritmo calcola il movimento del cursore attraverso l'intervallo in modo che un'estremità abbia sempre un minimo e l'altra un massimo.
  • Quando si fa clic sulla traccia del cursore, il cursore salta automaticamente al punto in cui è stato fatto clic e continua a muoversi in modo sincrono con l'utente se il pulsante del mouse viene premuto.
  • Si prevede di aggiungere la possibilità di far scorrere il cursore attraverso la traccia del cursore con la rotellina del mouse.


  • Risolti i problemi con l'elenco a discesa.

  • L'elenco non salta più quando si fa clic sul pulsante di apertura.
  • Corretto il problema della scomparsa dell'elenco quando si scorreva fino in fondo.
  • L'elenco può essere fatto scorrere con la rotella anche se il cursore si trova sulla barra di scorrimento o sui pulsanti.
  • Lo scorrimento dell'elenco con la rotellina del mouse è ora più veloce.


  • Risolto il problema dei falsi clic:

  1. In precedenza, la pressione di un pulsante o di un altro elemento simile causava un cambiamento di stato anche se la pressione avveniva al di fuori dello spazio dell'elemento. Questo problema è stato risolto. Se l'utente fa clic su un elemento ma cambia idea e sposta il cursore, oppure lo sposta su un altro elemento o su uno spazio libero del grafico, l'elemento del primo clic tornerà sempre allo stato precedente. Come se non fosse successo nulla. L'evento verrà annullato e non ci sarà alcuna modifica del valore del parametro. La fissazione del falso clic consente di annullare il clic all'ultimo momento semplicemente spostando il cursore (con il pulsante del mouse ancora premuto) in un altro spazio.


  • Si è deciso di concentrarsi sulla creazione di modelli per finestre di impostazione professionali simili a quelle di Windows, per facilitarne la creazione da parte degli utenti. Un buon esempio di tali finestre sono le finestre di esempio Impostazioni 1 e Impostazioni 2 (richiamate dal menu contestuale e dall'uso della barra delle applicazioni):

  • È stata aggiunta la possibilità di bloccare i messaggi.

    Esempio:

Aprire prima le diverse finestre di impostazione. I loro pulsanti si trovano nella parte inferiore della barra delle applicazioni. Quindi accedere al menu contestuale (fare doppio clic sul grafico) e aprire la finestra "Spiacenti, questo ordine è bloccato". Si trova qui:


Provate quindi a fare clic su una qualsiasi finestra aperta in precedenza con la finestra "Spiacenti, questo ordine è bloccato" aperta. Qualsiasi azione su altre finestre sarà bloccata finché la finestra non sarà chiusa. Tuttavia, è possibile limitare l'elenco delle finestre bloccate nelle proprietà della finestra nel codice informatico. In questo modo alcune finestre saranno bloccate e altre no. A seconda della decisione dell'utente.


  • Ora le finestre di dialogo possono essere aperte con il suono. Questo viene impostato tramite il codice KIB nelle proprietà della finestra.
  • Le finestre di dialogo hanno una priorità speciale rispetto alle altre finestre e vengono sempre disegnate sopra le finestre delle impostazioni.
  • I pulsanti delle finestre di dialogo (Ok, Annulla, Conferma, Chiudi) funzionano e chiudono automaticamente le finestre quando vengono premuti.


  • Le finestre di dialogo possono avere la funzione di minimizzazione disabilitata. In questo caso non possono apparire sulla barra delle applicazioni.


  • Il nome della finestra può essere posizionato a sinistra o al centro. Viene impostato da un flag nelle proprietà della finestra (cyb-code).
  • Le finestre di dialogo possono essere richiamate programmaticamente dall'applicazione dell'utente.
  • Le finestre di dialogo possono essere chiuse automaticamente quando si fa clic su un'altra finestra o su un grafico. Questa possibilità viene impostata dall'utente nelle proprietà della finestra nel codice cib.