Galleria di interfacce utente scritte in MQL - pagina 42

 

Aggiunto:

Le finestre del menu ora rimangono sempre all'interno dello spazio del grafico e non escono dalla vista. Esempio:

NON OLTREPASSANO IL BORDO DESTRO DEL GRAFICO:


NON OLTREPASSARE IL BORDO INFERIORE DEL GRAFICO:


 
In seguito fornirò un elenco di funzionalità che sono sul punto di essere implementate, perché hanno già funzionato in precedenti build del costruttore (4 anni fa). È abbastanza realistico includerle nelle nuove versioni.
 

La mancanza di indicazioni prioritarie per lo sviluppo non porta mai a buoni risultati. Una verità elementare che tutti gli sviluppatori professionisti conoscono. 4 anni fa non riuscivo a mettere in piedi una versione finita del designer perché non avevo un piano di completamento. Se avessi avuto un piano, tutto sarebbe stato finito molto tempo fa. Il motivo successivo per cui ho interrotto il progetto sono le discussioni infruttuose con le opinioni degli altri sul forum. Dibattiti sugli approcci alla programmazione o sulla necessità-non necessità della GUI in quanto tale... Purtroppo, è stata un'inutile perdita di tempo.

Qual è il completamento di questo progetto? La risposta a questa domanda è molto importante perché determina la scelta delle direzioni di ulteriore sviluppo.

Quindi, come lo presento:

1. Controllo software degli elementi dell'interfaccia.

Questo è uno dei compiti principali al momento. Ora l'utente può solo "catturare" gli eventi della GUI nel file API, ma non ottenere/modificare le proprietà degli elementi o i valori dei parametri. Soppesando la complessità, posso dire che il compito è facile e sarà risolto prima della prossima versione. Dare all'utente l'accesso programmatico a un'ampia serie di elementi della GUI e alle proprietà delle finestre.


2. Tabelle regolari e dinamiche .

Le tabelle regolari sono già state implementate. Il loro funzionamento è stato ripetutamente testato. Funzionano funzioni come il trascinamento di colonne e righe (per cambiare la loro posizione nella tabella), il collasso/espansione delle righe della tabella (con l'aggiunta dell'elemento T_FOLDER) o il nascondimento delle colonne. Funziona l'integrazione automatica dei controlli nella tabella. Ad esempio, caselle di controllo, elenchi a discesa, pulsanti, cursori, campi di input con pulsanti e campi di input semplici: tutti sono stati integrati nella tabella da soli quando è stata aggiunta la parola chiave IS_TABLE all'intestazione del gruppo. I valori nelle celle possono essere colorati in base al valore. Le tabelle possono anche essere incorporate in elenchi ad albero.

Tuttavia, vale la pena spendere del tempo per riportare in vita tutte le vecchie funzionalità?

È difficile dirlo.

Credo che la prima cosa da fare sia riportare le caratteristiche di base delle tabelle regolari e assicurarsi che funzionino bene. Il resto viene da sé.

Ma la cosa principale nell'interfaccia di un robot di trading serio sono le tabelle dinamiche. Quelle che sono in grado di passare attraverso un flusso infinito di dati provenienti dalla borsa. Non le ho mai implementate prima.

Conclusione: le tabelle dinamiche sono una priorità.

(Dobbiamo iniziare lo sviluppo).


3. Elenchi ad albero.

Elemento dell'interfaccia grafica abbastanza realizzato, rifatto molte volte in passato. E ogni volta ha funzionato meglio. L'ultima versione è particolarmente buona, ma non è finita. Se me lo ricordo nei dettagli, posso finirlo in un giorno o due. Ma quanto vi serve in una GUI? Penso che non faccia male, ma non si dovrebbe essere ossessionati da questo aspetto.

Conclusione: l'elenco degli alberi non è una priorità per un ulteriore sviluppo.

(Lo finirò quando avrò tempo).


4. Finestre dinamiche.

I meccanismi di base - ridimensionamento, scorrimento verticale e orizzontale, ridimensionamento, adattamento della finestra ridimensionata alla variazione delle dimensioni del grafico - funzionano già bene. Ma ci sono molti piccoli e fastidiosi bug. Essendo complete, le finestre dinamiche sono ideali per tabelle dinamiche di grandi dimensioni ed elenchi lunghi.

Conclusione: completare le finestre dinamiche è una priorità.

(Potrebbero essere necessari un paio o tre giorni di duro lavoro con entusiasmo).


5. Minimizzatori di gruppi e tabelle.

Gli elementi G_FOLDER e T_FOLDER hanno già funzionato molto bene in passato. Non so come funzionino ora, perché non ho avuto il tempo di testarli. È interessante notare che nell'ultimo sviluppo della funzione phenomenon element, ho unificato la gestione dell'elenco ad albero e di questi due tipi di collassatori. Una funzione gestiva tre elementi e non superava le 400-500 righe (che non sono molte per i miei standard). Se riesco a far funzionare di nuovo questa funzione (ora è disattivata), tutti e tre gli elementi funzioneranno perfettamente. Vediamo.

Conclusione: gli elementi G_FOLDER e T_FOLDER non sono prioritari.

(Lo farò se ne avrò la possibilità e la voglia).



E l'ultimo compito prioritario che mi è venuto in mente ora:

6. Creazione di un ramo di modelli di gruppi di elementi e finestre scritti nel linguaggio di markup.

Questo permetterà agli utenti di costruire rapidamente e facilmente l'interfaccia necessaria per risolvere i compiti, anche senza una profonda conoscenza del linguaggio.


Se qualcuno ha delle idee sulle priorità per un ulteriore sviluppo, è pregato di condividerle. Ne prenderò nota.

 

Sì, la gestione del programma è la più importante, un must per chiunque utilizzi il motore.

Per me, le tabelle dinamiche sono un must. L'interfaccia mi serve soprattutto per visualizzare gli eventi e i report in tempo reale. I controlli sono le cinghie per gestirli (filtri, ecc.) Con l'implementazione di questo potrei iniziare a integrare il motore.

La seconda priorità è una finestra a schermo intero. Ma questo è molto semplice: lo si può già fare nel designer. Con una barra delle applicazioni. E temporaneamente posso usare la finestra più grande possibile. Devo scegliere la dimensione, è doloroso.

La terza priorità è la grafica. Non so quanto sia difficile. Forse si dovrebbero usare gli strumenti kanvas standard, se sono abbastanza flessibili. Non ho mai provato niente di diverso da Fast And Furious Easy And Fast v1.

Se Dio vuole, la motivazione è sufficiente. Il più delle volte svanisce dopo un incontro con gli haters. "Le persone buone sono la maggioranza, ma quelle malvagie sono meglio organizzate".

 
Edgar Akhmadeev controlli sono necessari per gestirli (filtri, ecc.) Con l'implementazione di questo potrei iniziare a integrare il motore.

La seconda priorità è una finestra a schermo intero. Ma questo è molto semplice: è già presente nel designer. Con una barra delle applicazioni. E temporaneamente posso usare la finestra più grande possibile. Devo scegliere le dimensioni, il che è doloroso.

La terza priorità è la grafica. Non so quanto sia difficile. Forse si dovrebbero usare gli strumenti standard di kanvas, se sono abbastanza flessibili. Non ho mai provato, tranne Fast And Furious Easy And Fast v1.

Se Dio vuole, la motivazione è sufficiente. Il più delle volte svanisce dopo un incontro con gli haters. "Le persone buone sono la maggioranza, ma quelle malvagie sono meglio organizzate".

1. La gestione programmatica degli articoli sarà presente nella prossima versione. Tendenzialmente tra 7-10 giorni.

2. Le tabelle dinamiche sono "in fase di sviluppo". Non so ancora dire quanto tempo ci vorrà. Il processo potrebbe essere molto veloce.... o meno veloce. Non si sa.

3. Avete già una finestra a schermo intero. Provate. Nelle proprietà della finestra scrivete "DINAMICO" invece di "IMPOSTAZIONI". Provate e scrivete le vostre impressioni.(Basta andare alla versione field release del costruttore). È possibile modificare le dimensioni tirando i bordi della finestra o zoomare con il pulsante in alto. È possibile fare doppio clic sulla barra superiore (dove si trova il nome della finestra), oppure afferrare la finestra per il "tappo" e trascinarla verso l'alto finché non si ridimensiona da sola. Le stesse manipolazioni funzionano anche al contrario.

4. Stampate il file API della vostra finestra e postatelo qui. Cercherò di capire come vengono stampate le tabelle. Questo è importante per la futura implementazione delle connessioni software.


5. Penserò seriamente ai grafici personalizzati. Ho visto l'implementazione di Anatoly, ma non ho provato a replicare questo elemento.

 

Una sfumatura importante quando si lavora con una finestra dinamica:

La finestra non accetta elementi di tipo V_BOX, perché contengono una tela propria. Ciò comporta la sovrapposizione di una tela a un'altra. Pertanto, questo elemento deve essere commentato insieme a tutte le righe i, IN, "V1", .

Cioè, i gruppi che sono collocati nell'elemento V_BOX devono essere solo nella finestra su "MF". Non è necessario commentare specificamente la riga i, IN, "V1".

Se non funziona, domani ve lo mostrerò in modo più dettagliato. In immagini.

 

Un esempio di conversione della finestra delle impostazioni in una finestra dinamica:

(fare clic sull'immagine)

 
Ha funzionato con successo, ma sembra che tu abbia postato un po' troppo per sapere come padroneggiare questa libreria GUI da zero.
 
Mi aspetto di aggiungere altre (7) LEZIONI per far capire agli utenti come utilizzare la biblioteca.
 
Quando la casella degli strumenti si restringe, la barra delle applicazioni in basso non risponde immediatamente; è necessario passare a un altro grafico e fare clic nuovamente prima che la barra delle applicazioni si sposti in basso. Non sono sicuro che questo aspetto possa essere migliorato.