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

 
Vasiliy Sokolov:

...

3) Sì, indirizzando per nome, bisogna specificare tutti i parametri. Ma, soprattutto, non esiste un unico modello monolitico di evento. Se vuoi il tuo modello, sei il benvenuto. È elementare farlo. Ma non si può fare a meno del timer.

La coda di eventi è un algoritmo generalizzato per la gestione affidabile degli eventi. L'utente non compone nulla; gli eventi generati da lui arrivano alla coda da soli. La coda stessa consiste in un solo evento il 99,9% delle volte.

Beh, l'implementazione è simile alla mia, ma la mia è molto più semplice per l'utente.


  • E_Window_Element(value); Passare il valore all'elemento:
  • E_Window_Element(); Ottieni il valore dell'elemento:

  • E_Window_Element(M_COLOR, value); Imposta il colore di base.
  • E_Window_Element(T_COLOR, value); Imposta il colore del testo.
  • E_Window_Element(F_COLOR, value); Imposta il colore della cornice.


  • E_Window_Element(STATE, ON); Imposta lo stato cliccato.
  • E_Window_Element(STATE, OFF); Imposta lo stato depresso.
  • E_Window_Element(STATE, LOCKED_ON); Imposta lo stato bloccato.
  • E_Window_Element(STATE, LOCKED_OFF); Imposta lo stato spinto.
  • E_Window_Element(STATE, ON_H); Imposta lo stato quando si fa clic sul focus.
  • E_Window_Element(STATE, OFF_H); Imposta lo stato spinto a fuoco.


  • W_Window_name() Aprire la finestra.
  • W_Window_name(close) Chiude la finestra.


I nomi dei wrapper degli elementi del modulo sono stampati automaticamente nel file di connessione, ed entrano immediatamente nell'intellisense.

Vasily, puoi usare i nomi intellisense degli elementi e delle finestre nel tuo programma MQL?


ZS Vasily, nota quante azioni fa un wrapper per elemento. E richiede al massimo DUE parametri. O nessuno.

 
Igor Makanu:

... Ho avuto un fiasco totale con dataGridView - non posso scriverci dentro più di 3-5 secondi) la tabella 10x11 è già critica, anche se il modulo con la tabella è in esecuzione in un thread separato

SZY: ho collegato una StringGrid a MT4 5 anni fa in Delphi, non ho avuto problemi con essa. Era così facile da usare, tuttavia con la dataGridView di Microsoft ho un problema. Oggi proverò a sperimentare con SourceGrid, secondo i feedback è più veloce della dataGridView

Prova ancheinfragistics ultragrid. È la cosa più bella. Se c'è una gui che può migliorare le tue prestazioni di trading, è questa tabella.

 
Dmitry Fedoseev:

...

Dmitry, c'è un modello architettonico chiamato MVC. L'approccio che ho proposto è esattamente questo. Così quando lo critichi, critichi MVC in primo luogo e soluzioni come Angular, ASP Net MVC, Ruby on Rails e altri prodotti, non degni della tua attenzione di esperto, fatti attraverso il "culo" secondo te. Quindi penso che dovrebbe esserti chiaro perché non voglio discutere con te e dimostrare la validità della mia decisione - è semplicemente inutile.

 

Nel mio caso, l'analogo della registrazione

GuiController::SendEvent("AskLabel", TextChange, 0, 0.0, DoubleToString(ask, Digits()));

è la voce

E_Trade_panel__AskLabel(DoubleToString(ask, Digits()));

In questo caso, non ho bisogno di ricordare il nome di un elemento particolare. Scrivo E_ e si apre una lista di elementi, digito le prime lettere del nome della finestra e mi porta alla lista di elementi per una particolare finestra, poi seleziono l'elemento desiderato dalla lista.

 

Mi chiedo come si possa collegare una tabella di almeno 100 celle senza intelligenze? Dopo tutto, devi ricordare i nomi di tutte le celle.

Nel mio caso, ogni cella è nominata automaticamente per nome di riga e colonna, e la sua selezione è fatta tramite le intelligenze. Nella tua versione, Vasiliy, devi sapere esattamente come si chiama ciascuna delle 100 celle.

E se ho 10 finestre complesse con molti elementi e grandi tabelle, quanto tempo ci vorrebbe per scrivere i nomi degli elementi nelle chiamate? Sarei esausto).


E se i nomi sono gli stessi tra diverse finestre?

 
Реter Konow:

Mi chiedo come si possa collegare una tabella di almeno 100 celle senza intellisense?

Non lo so Peter, perché l'intellisense in MetaEditor funziona bene con tutte le variabili in C#, compresi gli array, le strutture, i tipi base, i metodi e anche le classi.

 
Vasiliy Sokolov:

Non lo so Peter, perché l'intellisense in MetaEditor funziona bene con tutte le variabili in C#, compresi gli array, le strutture, i tipi base, i metodi e anche le classi.

Mostra i nomi degli elementi?

 
Реter Konow:

Mostra i nomi degli elementi?

Lo fa, con i prototipi:

:))

 
Vasiliy Sokolov:

Ci puoi scommettere, con i prototipi:

:))

Vasily, tu non capisci.

GuiController::SendEvent("AskLabel", TextChange, 0, 0.0, DoubleToString(ask, Digits()));

Per impostare il valore di un elemento, si invia il suo nome. Il campo "Ask" ha il nome "AskLabel", dove l'intellisense mostra il nome dell'elemento?

 
Реter Konow:

Vasily, tu non capisci.

Per impostare il valore di un elemento, si invia il suo nome. Il campo "Ask" ha il nome "AskLabel", dove l'intellisense mostra il nome dell'elemento?

Peter, sembra che tu stia cercando qualcosa di cui lamentarti.

La risposta è no, l'intelligencer non ha mai lavorato con un elemento di testo e non lo farà mai. Ma se si tratta solo di una domanda, non è affatto un problema fare delle interlesioni sulle stesse definizioni.

s.s. A proposito, non funzionerà nemmeno per te:

__, EDIT,"Set lot", W,150,_,H,60,_,V_CURRENT,"1.00",