Galleria di interfacce utente scritte in MQL - pagina 59

 
La directory è ancora in russo ...... Spero sia possibile avere la directory e i nomi dei file in inglese come KIB PROJECTS ...... Questa è una mia piccola richiesta!
 
#include<(2)  KIB PROJECTS\(6) DEMO PROJECTS\Demo project 1.mqh>

Il progetto demo 1 è incluso in (1) KIB-source v1, ma perché non vedo la relativa finestra nel diagramma?

 
hini #:
Il catalogo è ancora in russo ...... Spero sia possibile avere il catalogo e i nomi dei file in inglese come KIB PROJECTS ....... Questa è una piccola richiesta da parte mia!
Naturalmente tradurrò i cataloghi in inglese prima di caricarli su kodobase. Solo che non ne ho avuto il tempo. Questa è una versione provvisoria per il test pubblico.
 
hini #:

Il progetto demo 1 è incluso in (1) KIB-source v1, ma perché non vedo la finestra associata nel diagramma?

È strano. Controllerò ora.
 
hini #:

Il progetto demo 1 è incluso in (1) KIB-source v1, ma perché non vedo la finestra associata nel diagramma?

Ho controllato l'assieme. Il progetto demo 1.mqh si trova qui:

(2) KIB PROJECTS\(6) DEMO PROJECTS\Demo project 1.mqh


 
Più tardi farò un resoconto completo della release.
 

Ieri, dopo aver scaricato la nuova versione, dopo tanto lavoro e in preda all'emozione, ho scritto un post molto positivo, elogiando letteralmente le nuove funzionalità. Un tale entusiasmo non è molto appropriato nel contesto di una discussione tecnica rigorosa. Oggi voglio esaminare le soluzioni implementate con calma e senza pregiudizi. Accetterò volentieri critiche costruttive e valutazioni obiettive. È importante per me chiarire il punto di vista degli utenti terzi. Il feedback mi aiuterà ad apportare modifiche e miglioramenti. E, naturalmente, a individuare e risolvere i bug.

 
Passiamo alla ripartizione del rilascio.
 
Inizierò da una nuova pagina in modo che le informazioni importanti rimangano visibili più a lungo.
 


Il compito era quello di implementare l'interazione programmatica del codice utente con l'interfaccia grafica del programma.

Secondo l'idea:

  • Dopo aver scritto e debuggato il codice KIB, l'utente ottiene il risultato desiderato (sotto forma di finestre pronte) e salva il progetto.
  • Come risultato della generazione ci sono due file: UIDATA.mqh tecnico e "API.mqh". Il primo è necessario per il caricamento e il funzionamento dell'interfaccia, il secondo per fissare gli eventi degli elementi.
  • L'utente trasferisce entrambi i file dalla cartella Files al proprio progetto (attualmente: KIB PROJECTS\(5) USER PROJECTS\Project 1).
  • Compila il proprio Expert Advisor o indicatore con le linee che collegano il motore ed entrambi i file:
//+------------------------------------------------------------------+
#include<(1)  KIB 1.0\(4) CONNECTIONS\KIB-DRIVE CONNECTIONS.mqh>
//--------------------------------------------------------------------
#include<(2)  KIB PROJECTS\(5) USER PROJECTS\Project 1\UIDATA.mqh>
//--------------------------------------------------------------------
#include<(2)  KIB PROJECTS\(5) USER PROJECTS\Project 1\API.mqh> 
//+------------------------------------------------------------------+
  • Lancia l'EA sul grafico e vede l'interfaccia.
L'EA Shell v1.mq5 è utilizzato come esempio nel progetto demo , che "rappresenta" un programma utente. Presenta le stesse connessioni necessarie per l'analogo utente .

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

Tuttavia, prima di questa versione, l'utente poteva ricevere gli eventi degli elementi interattivi solo in un file API sottochiave.

È importante sottolineare che l'utente non disponeva di molte funzioni software assolutamente essenziali.

Le elencherò:

  • Apertura/chiusura programmatica delle finestre della GUI.
  • Ottenere/impostare valori nei parametri di diversi tipi di elementi.
  • Commutazione programmatica degli stati degli elementi: ad esempio, accensione/spegnimento, blocco/sblocco degli elementi in seguito ad azioni dell'utente o a eventi esterni fissati dall'Expert Advisor/indicatore in esecuzione.
  • Ottenere/impostare programmaticamente altri valori delle proprietà degli elementi: base, testo, colore della cornice. Modifica dell'icona.


Questo aggiornamento risolve quasi tutti i compiti che si erano prefissati.



Li elenchiamo:.
  • L'utente può aprire/chiudere le finestre dell'interfaccia grafica tramite una chiamata di programma.
  • L'utente può ottenere/impostare valori nei parametri degli elementi che li prevedono. Inclusi elementi non interattivi come le celle di tabella (CELL) e le etichette di testo con un parametro (VALUE).
  • È stata implementata la commutazione del programma tra due e quattro stati di diversi tipi di elementi. Per i pulsanti e le caselle di controllo sono disponibili quattro stati di commutazione del software (acceso/spento/bloccato acceso/bloccato spento), per gli altri elementi due (bloccato/sbloccato).
  • Per i valori di ritorno/impostazione del programma sono disponibili piccoli set di proprietà dei singoli elementi. Ogni insieme è rappresentato da un prefisso che si apre con un elenco intellisense. Esso generalizza un piccolo gruppo correlato di elementi con proprietà simili. Questo approccio elimina la confusione nella moltitudine di proprietà di diversi tipi di elementi.
  • L'impostazione programmatica di un valore a un parametro invia l'evento alla posizione dell'elemento nel file API, dove l'utente può scrivere codice aggiuntivo per gestirlo.
  • Le celle delle tabelle sono denominate automaticamente piegando il nome della riga e della colonna. Ricevono un nome e un wrapper funzionale nel file UIDATA.mqh. Tuttavia, non sono presenti nel file API perché non sono elementi interattivi. Si trovano nell'elenco degli elementi della finestra e rispondono al controllo del software come tutti gli altri elementi.


Grazie alle possibilità di controllo del programma, sono state realizzate cose che prima non erano disponibili:

1. Invio di valori. Ottenere il valore di un elemento e inoltrarlo ad altri elementi della stessa finestra o di un'altra.

2. Apertura software di finestre di avviso e di dialogo. Ad esempio, quando è necessario visualizzare un messaggio urgente o una raccomandazione per un utente.

3. Ottenere un quadro generale delle impostazioni e dello stato di esecuzione attraverso l'interrogazione dei parametri degli elementi. Può essere utilizzato come complemento alle analisi di altri parametri del programma.

4. Ripristino dinamico delle impostazioni del programma senza interrompere il processo di lavoro.

5. Grazie alla possibilità di modificare i colori delle basi, del testo e delle cornici (non ancora delle cornici), l'interfaccia diventa più interattiva e informativa. Ad esempio, quando si riavvolge un valore e questo entra nella zona a rischio, il campo di immissione con i pulsanti può segnalare all'utente il pericolo tramite il colore rosso della base o del testo. Questo è facile da implementare. Lo stesso vale per la barra di scorrimento. Nella zona dei valori pericolosi, è possibile cambiare programmaticamente il colore della barra. Il risultato è interattivo, informativo e pratico.


Al momento non ho ancora realizzato tutte le possibilità che si prospettano e sono certo che ne arriveranno molte altre.


Passiamo quindi alla parte pratica della rottura della nuova versione.