Il mio approccio. Il nucleo è il motore. - pagina 28

 
Dmitry Fedoseev:

A proposito, anche la biblioteca di Anatoly è uno scherzo. Quanti articoli sull'argomento? Circa 50? Ovunque vai nei commenti - "Oh, non ancora, devo migliorarlo". Che cosa per iniziare a utilizzare la sua biblioteca, è necessario leggere questi 50 articoli? Qual è il succo e il significato?

Ho provato a collegare la libreria citata, la mia opinione è ambigua, sì è comoda, sì è bella, ma non ero impegnato in MQL quando la libreria è stata creata, e con le build successive di MT, la libreria è diventata "condizionatamente operativa", alcuni esempi dagli articoli non si compilano o funzionano con bug, e per capire le tonnellate di codice, ahimè, è più facile utilizzare la consegna standard di MT

Maxim Kuznetsov:

I moderni costruttori di GUI (quelli che "spargono i pulsanti sui moduli") sono una cosa piuttosto tecnologica e attaccare elementi MQL a loro non è fantastico.

Quasi tutti hanno nella forma intermedia (file di progetto, ecc.) un XML che descrive la posizione e le relazioni tra gli elementi.

La generazione di codice per la piattaforma di destinazione è in effetti una trasformazione XSLT che può essere fatta da chiunque pensi di essere un web-developer :-)

Prendete per esempio EasyAndFast (https://www.mql5.com/ru/code/19703) perché è basato su oggetti e ha tutti i componenti necessari. (ed è aperto e documentato, a differenza di questo thread),
e scrivere semplicemente un traduttore.

Non c'è un costruttore gui-mql, non perché sia mega complicato, ma perché semplicemente non è popolare.


Sì, li sto cercando - sono interessato, almeno per sbattere il naso a Peter! ))))

Non ho tempo o voglia di lavorare su tutti i dettagli - perché non usare semplicemente Crossplatform GUI builder?

 
Igor Makanu:

Ho provato a collegare la suddetta libreria, la mia opinione è ambigua, sì è comoda, sì è bella, ma non ero impegnato in MQL quando questa libreria è stata creata, e con le successive build di MT, la libreria è diventata "condizionalmente operativa", alcuni esempi dagli articoli non si compilano o funzionano con bug, e per capire tonnellate di codice, ahimè, è più facile usare il pacchetto MT di default


Sì, lo sto cercando - almeno per sbattere il naso a Peter! ))))

Non ho tempo né voglia di indagare su tutto questo!

Date un'occhiata a QT Designer.

 
Dmitry Fedoseev:

Peter, dove sta scritto che la tua GUI non è composta da oggetti grafici, ma è disegnata su un canvas? Non facciamo del sarcasmo, sembra terribile.

...

Come artista, non riuscivo a superare queste parole.


Certo, tutt'altro che ideale, ma "terribile"?

 
Igor Makanu:

Sì, ne sto cercando uno - mi piacerebbe come minimo sbattere il naso a Peter! ))))

Ma seriamente, mi piacerebbe provare qualche costruttore di GUI multipiattaforma, forse qualcosa da mostrare, che posso guardare?

Non c'è bisogno di pulire)). E non c'è bisogno di guardare.

DLL in Do diesis. L'ambiente VS ha già un costruttore. Il linguaggio è quasi simile a MQL. Se non per il Mercato, ma per te stesso, l'opzione più semplice e ovvia con un look and feel moderno.

E quello che Peter offre è l'interfaccia grafica simile al DOS della serie Turbo Vision di Borland nei primi anni '90.

 
Yuriy Asaulenko:

E quello che Peter offre è una GUI di tipo DOS della serie Turbo Vision di Borland nei primi anni '90.

È un'interfaccia grafica abbastanza buona. Forse sono troppo vecchio, ma penso che sia abbastanza buono.

La domanda è: chi potrebbe essere interessato ad usarlo? Quanti sono?

 

Fare la propria GUI non è il problema.

Il problema è trovare un uso significativo per esso che sia necessario per un GRANDE numero di utenti. Finora, questo è ciò con cui tutti hanno difficoltà. Se c'è un compito normale, ci sarà una GUI, e più di una...

Petr, qual è la risposta alla domanda PERCHE' gli utenti hanno bisogno del tuo prodotto? Capisco che tu sia affascinato dal processo, io ci stavo passando. Ma perché gli utenti ne hanno bisogno? Chi è il pubblico di riferimento?
 
Georgiy Merts:

È un'interfaccia grafica abbastanza buona. Forse sono troppo vecchio, ma penso che sia abbastanza buono.

La domanda è: chi sarebbe interessato ad usarlo? Quanti sono qui?

Buono e cattivo - tutto dipende dai compiti specifici. Alcuni anni fa ho progettato un terminale GUI su fogli Excel - con pulsanti, campi, tabelle, grafici in tempo reale e altri attributi. Ne avevo bisogno specificamente per il trading manuale. Non ci sono stati problemi con la costruzione e l'interfaccia.

La GUI di Peter è presentata come una soluzione al problema e una semplificazione della costruzione. L'ha concepito e realizzato, e ben fatto, certo, ma qui non c'è un problema da molto tempo, e non c'è molto da semplificare.

 

111

Mm-hmm - bellissimo. C'è anche un'incongruenza (nello stile) con alcuni degli altri screenshot, che è molto discutibile.

 
Реter Konow:

Ecco un esempio della mia interfaccia di connessione:

Qui è già tutto sistemato.

Ho dato un'occhiata. È un casino. Il file è quasi interamente occupato dalla funzione On_Gui_Event, che è lunga 600 linee. Eccone un frammento (l'ortografia e la punteggiatura sono conservate):

void On_Gui_Event(int Element, string value)
{
 string action = value, selected_option = value; //DON'T CHANGE THIS LINE
//------------------------------------
 switch(Element)
   {
//=====================================================================================================================
//WINDOW:   Checkboxes | element: CHECKBOX  | name: Checkbox_1  |  Location: Window's Main Frame
//=====================================================================================================================
case CHECKBOX3___Checkbox_1:
               //------------------------------------------------------------------------------------------------------
               //What to do when checkbox checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                case checked:     break;
  
                case unchecked:     break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
  
//=====================================================================================================================
//WINDOW:   Checkboxes | element: CHECKBOX  | name: Checkbox_2  |  Location: Window's Main Frame
//=====================================================================================================================
case CHECKBOX4___Checkbox_2:
               //------------------------------------------------------------------------------------------------------
               //What to do when checkbox checked or unchecked?
               //------------------------------------------------------------------------------------------------------
               switch((int)action)
               {
                case checked:     break;
  
                case unchecked:     break;
               }
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
  ...
//=====================================================================================================================
//WINDOW:   Spin edits | element: D_LIST  | name: D_LIST_2  |  Location: Window's Main Frame
//=====================================================================================================================
case D_LIST20___D_LIST_2:
               //------------------------------------------------------------------------------------------------------
               //What to do when 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"){}
               //------------------------------------------------------------------------------------------------------
               //Your comment:
               //------------------------------------------------------------------------------------------------------
               break;
  ...
  }
}

È solo spazzatura. Il codice naturalmente non si compila. Nessuna delle costanti del caso è definita nel file. L'interruttore è all'interno della custodia. I rientri sono fatti in modo tale da voler confondere un povero utente. C'è un mucchio di codice inefficiente come if(selected_option == "L_ITEM 1"){}.

 
Vasiliy Sokolov:

Ho dato un'occhiata. È un casino. Il file è quasi interamente occupato dalla funzione On_Gui_Event, che è lunga 600 linee. Eccone un frammento (l'ortografia e la punteggiatura sono conservate):

È solo spazzatura. Il codice naturalmente non si compila. Nessuna delle costanti del caso è definita nel file. L'interruttore è all'interno della custodia. I rientri sono fatti in modo tale da voler confondere un povero utente. Un sacco di codice inefficiente come if(selected_option == "L_ITEM 1"){}.

Vasily, mi hai fatto ridere molto. )) Perché dovresti cercare di compilare tutto quello su cui metti le mani?)

Questo è un esempio di un file di connessione GUI. Chiedete a Oleg Papkov come funziona. Che tipo di "codice inefficiente"? Codice normale che è fatto per essere il più chiaro possibile.