Fare un progetto in crowdsourcing su Canvas - pagina 35

 

A proposito, dal momento che la gente ha a che fare con un'attesa da tempo:

questo è uno screenshot casuale preso da yandex, l'interfaccia GUI client-server, e anche sulla rete. Non c'è bisogno di reinventare la ruota...

(un secondo di pubblicità) Pi è davvero forte. Il tungsteno onesto vive lì :-)

 
Алексей Барбашин:

Sì, questo è il problema principale! Lo stesso mercato proibisce l'uso delle DLL, quindi dobbiamo reinventare la ruota. Ok, se qualcuno pensa che la GUI non sia necessaria, ma qualsiasi calcolo lungo e complesso in ogni caso in un thread non funzionerà, tutto si bloccherà! Quindi deve essere fatto in un dll... che è proibito nel mercato...

E così via. Per questo motivo devo disegnare e risolvere tutto con metodi mql.

In effetti, la separazione di GUI e logica in thread è, ovviamente, già possibile. Qui i ragazzi hanno già discusso la questione del parallelismo https://www.mql5.com/ru/forum/288985/page5#comment_14722396.

Come risultato, il modulo stesso potrebbe essere lasciato nel thread principale, come viene fatto in winnda, mentre qualsiasi calcolo aggiuntivo potrebbe essere spostato all'esecuzione in "background". Questo è il modo in cui funziona per Windows, Linux e Android.

Sì, ho visto quell'articolo, che è una specie di altra stampella con un mucchio di codice che non voglio nemmeno guardare.
Quando tutto è molto più veloce e facile da fare in dll.
A proposito e mql Socket eWebRequest ho rinunciato, perché quando il server mql non è disponibile, a causa della rottura della connessione,
Le funzioni socket o webrequest sono bloccate, quindi tenetelo a mente, se decidete di costruire applicazioni su socket mql e webrequest.

 
Maxim Kuznetsov:

A proposito, finché la gente fa cose che sono già state fatte prima:

Questo è uno screenshot casuale preso da yandex, interfaccia GUI client-server, e sulla rete. Non c'è bisogno di reinventare la ruota...

(un secondo di pubblicità) Pi è davvero forte. Il tungsteno onesto vive lì :-)

a proposito e Scratch nello screenshot è più o meno quello che Konov vuole fare, mettere insieme un algoritmo di dadi.

 
Maxim Kuznetsov:

è perché microsoft è al comando :-)

Perché pensi che le persone perdano i loro dettagli di accesso quando aggiornano e attivano i prodotti su un sistema pirata?

Cosa c'entraMicrosoft con le chiavi di firma delle DLL? Questo identifica solo lo sviluppatore.
Le chiavi per firmare il dll, possono essere rilasciate da MQ, a coloro che sono stati pienamente identificati nel mercato.
Con questa chiave lo sviluppatore firma il suo dll per identificare chi ha scritto il dll.
La chiave della firma dll non influisce sull'attivazione del prodotto.

 
Maxim Kuznetsov:

///

Riesci a capire che non c'è una vera e propria GUI sulla MKL? Quello che avete è del '95. Vergogna... E voi con le richieste di una GUI di terze parti, avete pensato a come usarla in MT? Come collegarlo? O non dare un miele, lascia che ti dica una banalità?))

 
Реter Konow:

Riesci a capire che non c'è una vera e propria GUI sulla MKL? Quello che avete è del '95. Vergogna... E voi con le richieste di una GUI di terze parti, avete pensato a come usarla in MT? Come collegarlo? O non darti un miele, lascia che ti dica una banalità)).

Peter, probabilmente ti aprirò gli occhi e parlerò per Maxim: Maxim conosce l'argomento meglio di chiunque altro e circa un anno e mezzo fa ha postato la sua versione di GUI, formandola sulla base del markup. Inoltre, la GUI è stata costruita in un ambiente esterno, ma aveva una piena interazione con il programma (indicatore, Expert Advisor).

Maxim, scusa se ho risposto alla tua domanda.

Tuttavia, vorrei tornare all'argomento. Ho preso un'immagine da un articolo sul funzionamento della libreria standard:


Questa schermata mostra la composizione del dialogo in forma semplificata.

In questa versione, il Border è l'elemento principale che crea l'oggetto canvas sul grafico e tutti gli oggetti slave sono disegnati su di esso. O meglio, viene disegnato a seconda dell'oggetto schiavo.

Il pulsante Chiudi è disegnato sulla Didascalia e la Didascalia è disegnata sul Bordo, che è poi disegnato sulla tela con tutti gli elementi disegnati.

 
Алексей Барбашин:

Peter, probabilmente ti aprirò gli occhi e te lo dirò per Maxim: Maxim ha più familiarità con questo argomento di chiunque altro e circa un anno e mezzo fa ha postato la sua versione di GUI, che era formata sulla base del markup. Inoltre, la GUI è stata costruita in un ambiente esterno, ma aveva una piena interazione con il programma (indicatore, Expert Advisor).

Maxim, scusa se ho risposto alla tua domanda.

Tuttavia, vorrei tornare all'argomento. Ho preso un'immagine da un articolo sul funzionamento della libreria standard:


Questa schermata mostra la composizione del dialogo in forma semplificata.

In questa versione, il Border è l'elemento principale che crea l'oggetto canvas sul grafico e tutti gli oggetti slave sono disegnati su di esso. O meglio, viene disegnato a seconda dell'oggetto schiavo.

Il pulsante Close è disegnato su Caption e Caption è disegnato su Border e questo pulsante con tutti gli elementi disegnati è disegnato su canvas.

Non so cosa abbia postato e cosa abbia fatto nella GUI, ma nei miei thread non ha fatto un solo suggerimento tecnico, soluzione o discussione sull'argomento. Solo trolling vuoto, indicando soluzioni di terzi ed esortando a non reinventare la ruota.

Torniamo all'argomento in questione.

Per quanto ho familiarità con la libreria standard (molto poco in realtà), gli elementi e le finestre sono composti da oggetti MT. Cioè, nel nostro contesto - non sono disegnati sulla tela. Naturalmente sono disegnati, ma non sulla nostra tela, il che ci impedisce di controllare i colori dei pixel, creare gradienti di superficie e altro.

In teoria, potremmo prendere la struttura della libreria, copiarla e farne un analogo sul kanvas. In teoria...

Il problema è che CCanvas stesso non è adatto per fare una GUI su di esso. Perché? Perché il sistema kanvas è usato principalmente per le primitive grafiche. Quindi, in sostanza, questa classe non fornisce altro che primitive. L'archetipo GUI deve essere costruito da te. E in questo caso, la classe non è necessaria. È più conveniente accontentarsi delle proprie soluzioni. Dopo tutto, si può disegnare un marcatore rettangolare senza la classe. Proprio come si può creare o caricare una tela. È molto semplice. Pertanto, ho preferito la mia soluzione.

Ma qualcuno non può fare a meno di CCanvas. Per questo non insisto.

 
Реter Konow:

Non so cosa abbia postato e cosa abbia fatto in materia di GUI, ma nei miei thread non ha dato nessun suggerimento tecnico, nessuna soluzione e nessuna discussione sull'argomento. Solo trolling vuoto, indicando soluzioni di terzi ed esortando a non reinventare la ruota.

Torniamo all'argomento in questione.

Per quanto ho familiarità con la libreria standard (molto poco in realtà), gli elementi e le finestre sono composti da oggetti MT. Cioè, nel nostro contesto - non sono disegnati sulla tela. Naturalmente sono disegnati, ma non sulla nostra tela, il che ci impedisce di controllare i colori dei pixel, creare gradienti di superficie e altro.

In teoria, potremmo prendere la struttura della libreria, copiarla e farne un analogo sul kanvas. In teoria...

Il problema è che CCanvas stesso non è adatto per fare una GUI su di esso. Perché? Perché il sistema kanvas è usato principalmente per le primitive grafiche. Quindi, in sostanza, questa classe non fornisce altro che primitive. L'archetipo GUI deve essere costruito da te. E in questo caso, la classe non è necessaria. È più conveniente accontentarsi delle proprie soluzioni. Dopo tutto, si può disegnare un marcatore rettangolare senza la classe. Proprio come si può creare o caricare una tela. È molto semplice. Pertanto, ho preferito la mia soluzione.

Ma qualcuno non può fare a meno di CCanvas. Quindi non insisto su questo.

Stop! Peter (giusto?), facciamo delle convenzioni per capirci. Condizione 1: non chiameremo un canvas una classe CCanvas ma solo un canvas per disegnare una parte dello schermo o una risorsa in particolare. La classe CCanvas non ha niente a che fare con tutto questo e non ci soffermeremo affatto su di essa. Fornisce semplicemente delle funzioni per disegnare su quella tela e questo è tutto! In effetti, possiamo disegnare usando molti metodi diversi.

Per "disegnare" si intende la formazione di una matrice di pixel, in base alla quale viene creata una risorsa che viene poi collocata sul grafico.

 
Алексей Барбашин:

Stop! Peter (giusto?), accettiamo alcune convenzioni per la comprensione reciproca. Condizione 1: non chiameremo CCanvas una classe, ma solo una tela per disegnare parte dello schermo, o specificamente una risorsa. La classe CCanvas non ha niente a che fare con tutto questo e non ci soffermeremo affatto su di essa. Fornisce semplicemente delle funzioni per disegnare su quella tela e questo è tutto! In effetti, possiamo disegnare usando molti metodi diversi.

Per "disegnare" si intende la formazione di una matrice di pixel sulla base della quale viene creata una risorsa e poi collocata sul grafico.

Proprio così.

 
Алексей Барбашин:

Peter, probabilmente ti aprirò gli occhi e te lo dirò per Maxim: Maxim ha più familiarità con questo argomento di chiunque altro e circa un anno e mezzo fa ha postato la sua versione di GUI, che era formata sulla base del markup. Inoltre, la GUI è stata costruita in un ambiente esterno, ma aveva una piena interazione con il programma (indicatore, Expert Advisor).

Maxim, scusa se ho risposto alla tua domanda.

Tuttavia, vorrei tornare all'argomento. Ho preso un'immagine da un articolo sul funzionamento della libreria standard:


Questa schermata mostra la composizione del dialogo in forma semplificata.

In questa versione, il Border è l'elemento principale che crea l'oggetto canvas sul grafico e tutti gli oggetti slave sono disegnati su di esso. O meglio, viene disegnato a seconda dell'oggetto schiavo.

Il pulsante Close è disegnato su Caption e Caption è disegnato su Border e tutti gli elementi sono disegnati sulla tela.

Naturalmente, questo non è del tutto corretto :-)

Ho postato un'interfaccia alla DLL Tcl (che è Tool Common Language), che ha una grafica Tk che è condivisa come una GUI in Python/Ruby/etc

l'obiettivo non era quello di ottenere una GUI, ma un bel sottoprodotto :-)

tcl.Eval("button .pressme -text {Hello Peter}; pack .pressme") ;

a mio parere, conveniente, e soprattutto breve :-)

Non sto agitando nessuno - conosco tcl/tk, lo uso, condivido le mie esperienze (vedi sourceforge atcl).

Motivazione: