Galleria di interfacce utente scritte in MQL - pagina 45

 
hini #:
Ho scaricato la gif, non sono sicuro che sia un problema del mio sistema operativo. Lo sto solo segnalando.
Grazie per averlo segnalato. Non ho testato questa opzione di ridimensionamento del grafico. Controllerò l'evento in OnChartEvent().


 
hini #:
Ho scaricato la gif, non sono sicuro che sia un problema del mio sistema operativo. Lo sto solo segnalando.
Sì, ho trovato la causa. Ridimensionare il grafico in modi diversi genera diverse combinazioni di eventi OnChartEvent(). Quando si cambia manualmente, l'evento OnChartChange arriva 2 volte (ho controllato). Quando si cambia grafico, una o due volte. Quando si chiude la finestra del navigatore una volta, ma gli altri eventi arrivano come CharEvent Custom. Quando si sposta la finestra del terminale su un altro monitor - una volta.

In generale, è necessario scrivere condizioni che catturino tutte le varianti di combinazioni di eventi quando si cambiano le dimensioni dei grafici.
 
Vorrei aggiungere il motivo per cui non è possibile verificare semplicemente le dimensioni del grafico confrontandole con quelle registrate in precedenza.

Quando si passa da un grafico all'altro, le funzioni ChartGetInteger() delle dimensioni del grafico inviano valori errati, il che fa sì che l'algoritmo "pensi" che le dimensioni siano state modificate e la barra delle applicazioni "salti" dal suo posto. Ho dovuto lavorare molto per aggirare questo problema. Ora controllerò quali valori delle dimensioni dei grafici vengono segnalati alle funzioni ChartGetInteger() su questi eventi.
 
Cioè, quando si cambia grafico, le dimensioni non cambiano, ma l'evento ChartChange arriva, ma la funzione ChartGetInteger() per qualche motivo riporta SEMPRE le dimensioni 480 (larghezza) e 167 (altezza). Sempre e con qualsiasi dimensione del grafico. (Build 2470. Non ho ancora controllato la nuova).
 
Nella nuova versione (4435), quando si passa da un grafico all'altro, la funzione ChartGetInteger() restituisce i valori 490 di larghezza e 103 di altezza. Le dimensioni effettive del grafico sono 1068 di larghezza e 438 di altezza.

Si noti che le dimensioni non cambiano quando si cambia grafico.
 
Sulla base di queste condizioni, continuerò a studiare le peculiarità degli eventi in arrivo per distinguere i cambiamenti reali nelle dimensioni del grafico da quelli errati. E quando gli sviluppatori sistemeranno la funzione, semplificherò il codice. :)
 
Ho testato diversi eventi di ridimensionamento del grafico. Il problema sembra riguardare solo la commutazione del grafico, dove non si verifica alcun ridimensionamento effettivo. Ma la funzione ChartGetInteger() riporta costantemente 490 a 103.

Tutto va bene per gli altri eventi.


Correzione della barra delle applicazioni nella prossima versione.
 
Реter Konow ridimensionamento del grafico. Il problema sembra verificarsi solo quando il grafico viene commutato, nel qual caso non si verifica alcun ridimensionamento effettivo. Tuttavia, la funzione ChartGetInteger() riporta costantemente 490 a 103.

Tutti gli altri eventi vanno bene.


Il problema della barra delle applicazioni sarà risolto nella prossima versione.
Grazie per il vostro lavoro! Attendo con ansia il vostro lavoro.
 
hini #:
Grazie per il lavoro svolto! Non vedo l'ora di vedere il vostro lavoro.
Grazie!
 

Pulito, ricompilato, reinstallato.

Vi elencherò quello che ho notato, in ordine sparso:

1. Dopo aver aperto una finestra, non appare nulla sulla barra delle applicazioni. Dopo aver ridotto a icona la finestra, appare il pulsante. Dopo averla aperta, il pulsante non scompare. Se il concetto di comportamento "come in Windows" è concepito, dovrebbe apparire subito.

2. Con una finestra dinamica, dopo aver spostato il cursore sui pulsanti di minimizzazione e massimizzazione, questi rimangono evidenziati finché il cursore si trova all'interno della finestra.

3. Con una finestra dinamica, l' intestazione diventa grigia dopo l' espansione, rimane grigia dopo il ritorno e ripristina il colore solo dopo la minimizzazione e il ritorno.

4. La finestra espansa non nasconde le scale di tempo e di prezzo sul grafico.

5. Una tabella posizionata sotto"H_TAB, "Report"" con il comando"i, AT, _X2X, "MF", 5, _Y2H, "Report", 5," ignora l'impostazione del bordo sinistro. Lo stesso vale per"i, AT, _X2X, "MF", 5, _Y2Y, "MF", 20,".

6. La cosa più importante è che Il fatto che la finestra dinamica non consenta V_BOX ha cambiato completamente il mio progetto. Le due tabelle si trovavano nelle proprie caselle per facilitare il posizionamento e lo scorrimento. Ora che ho dovuto disegnarle direttamente su "MF", non posso posizionare la tabella inferiore immediatamente sotto quella superiore. Legare "i, AT, _X2X, "MF", 5, _Y2H, "Tabella1", 5," non funziona perché il nome del gruppo Tabella1 non è un elemento. Sono riuscito a fare il binding all'ultima riga della tabella, ma con una tabella dinamica questa non è un'opzione. Non ho capito come fare riferimento alla tabella e non al gruppo. Se si intende aggiungere righe alla tabella in modo programmatico, si presuppone il modo di indirizzare la tabella.

7. Un'altra cosa. La vostra finestra dinamica è una finestra peer che può essere espansa e chiusa. Non vorrei una finestra, ma un desktop. Come nel vostro costruttore. In modo che

a) si apra subito in modo espanso, coprendo l'intero grafico

b) non abbia un'intestazione e una cornice (solo una barra delle applicazioni)

c) non possa essere chiusa

d) permetta di posizionare gli elementi come una normale finestra.

In altre parole, sostituire DINAMIC con FULLSCREEN o DESKTOP. La base per questo è già disponibile.