Non possiamo più controllare il posizionamento degli oggetti sul grafico "verticalmente"

 

L'ultima, quasi scandalosa, discussione sul problema della formattazione del codice sorgente si è conclusa con gli sviluppatori che hanno riconosciuto il "diritto" del programmatore di scrivere i programmi come vogliono (non come pensano) e hanno promesso di finalizzare le impostazioni di formattazione del codice sorgente.

Ora ho incontrato una situazione simile e di nuovo voglio chiedere il parere di coloro per i quali sviluppano MQL5.

Inizia qui. In breve, la storia è la seguente: gli oggetti in MQL5 sono posti in una tabella nell'ordine della loro creazione. Il primo oggetto creato è il più basso. Se lo si cancella accidentalmente nel codice o da un utente, non sarà possibile rimetterlo a posto in nessun altro modo (tranne che cancellare gli oggetti rimanenti e ricrearli nell'ordine corretto). L'esempio più ovvio: avete fatto un substrato per metterci sopra testi, campi di input e pulsanti. Se ora lo cancelli e lo crei, coprirà tutto quello che vorresti vedere sopra di esso come il più nuovo.

Ho chiesto al Service Desk un suggerimento.

необходимо предусмотреть механизмы произвольной сортировки объектов "по вертикали". Либо наличием свойства Zorder у каждого объекта, либо функциями BringToFront, SendToBack, InFrontOf, BehindOf. Ну или хотябы сделайте так же как было в 4-ке - по имени объекта, т.к. к такому поведению объектов все уже привыкли и ожидают что в 5-ке будет также.

L'ho ricevuto subito su ....

Anton Timofeev 2010.05.27 12:27
La regola della sequenza di disegno attuale è semplice e sufficiente per il controllo del disegno. L'ordinamento per nome in alcuni casi dà un controllo più flessibile sulla sequenza di rendering - soluzione semplice per il compito specifico descritto in questo forum (piccolo svantaggio), ma costringerà tutti gli utenti a considerare attentamente il nome quando si aggiunge qualsiasi oggetto (compresi quelli non-MQL) (grande svantaggio).
La sequenza di rendering alla sovrapposizione degli oggetti in MT5 è già utilizzata in pratica (sfondo, pulsanti, ecc.). Non mi sono lamentato dei problemi - tutto viene risolto in modo semplice e algoritmico.

chi avrebbe dubitato che questa è, per così dire, una soluzione di "controllo del rendering semplice e sufficiente" per loro! :))))

al mio commento:

ForexTools:

solo perché altri non si sono lamentati non significa che non ci sia un problema, forse perché nessuno si è preoccupato dell'interfaccia ;)

ha risposto


In giro per il mondo:

https://www.mql5.com/ru/articles/64

https://www.mql5.com/ru/articles/65

https://www.mql5.com/ru/code/68

Abbiamo fatto molti test interni, abbiamo sviluppato interfacce e giochi. Non c'è nessun problema in quanto tale con l'ordine di rendering, basta cambiare il tuo approccio tenendo presente l'ordine.

Buon punto: ho usato giochi come tetris e miner per lucidare le soluzioni per le future interfacce di trading :)))

E la linea di fondo è il loro verdetto:

Sopra ho descritto il motivo per cui non faremo cambiamenti in modo abbastanza dettagliato. Ripeto in breve: per comodità in un caso particolare, non si può rendere la vita più difficile a tutti gli altri in tutti gli altri casi.

Se in F4 c'era almeno un certo ordine di localizzazione degli oggetti del grafico (per nomi di oggetti), in 5 abbiamo fatto un mazzo di carte auto-disegnato e suggerito di "cambiare il nostro approccio" per scrivere programmi MQL5.


TOTALE: cosa ne pensano i colleghi codificatori? Avete bisogno di un meccanismo per controllare il posizionamento degli oggetti in verticale? Ho suggerito tre opzioni:

1) vecchio - per nomi di oggetti

2) normale - con l'aggiunta della proprietà di ordine Z ad ogni oggetto del grafico

3) procedurale - usando le funzioni BringToFront, SendToBack, InFrontOf, BehindOf

o accettare l'unica opzione degli sviluppatori: in caso di cancellazione, ridisegno completo di tutti (!!!!) gli oggetti nell'ordine richiesto.

Chi ha qualche idea al riguardo?


 
2)
 
Non capisco bene. In MT5, gli oggetti grafici non sono disposti in profondità per nome dell'oggetto ma per tempo di creazione?
 
Integer >>:
Не совсем понял. В МТ5 графические объекты в глубину располагаются не по имени объекта а по времени создания?
Esattamente! C'è un semplice script qui per controllare
 

.

Io sono per 2) o almeno 1)

E quello procedurale, chi lo sa?


Propongo anche la mia variante

tutti a favore dei fogli di stile a cascata!!!!!

Sì, il tuo in mkl5 un sacco di "grande"

 

2)

semmai, il fatto che l'ordine degli oggetti sia determinato dal momento della creazione è solo uno svantaggio per la mappatura.

senza ambiguità - questa è una svista e ignora il problema da parte dei meta-citi.

Dopo tutto, nel caso dell'ordinamento per nome, il programmatore ha almeno qualche possibilità di ordinare a sua discrezione,

mentre con la data di creazione anche questa possibilità è sparita.

Dovresti restituire 1 o meglio fare 2. Aggiunge solo un'altra comoda proprietà all'oggetto.

 

Naturalmente per la coordinata Z, è nello spirito di OOP.
Io sono per il 2).

 
Sono a favore di z-order/z-index
 

2) - Scelta migliore.

 

1. Si può, naturalmente, discutere delle caratteristiche non documentate. E questo è stato fatto molte volte. Ma per trovare soluzioni. Non per cambiare un comportamento non documentato.

2. Abbiamo avuto molte richieste (più dei partecipanti a questa discussione) per cambiare il modo in cui gli oggetti sono resi. Sì, in Five abbiamo fatto un ordine semplice e naturale in base al tempo di creazione dell'oggetto (tuttavia, anche questo non è documentato). Cosa facciamo ora?

3. Non facciamo niente! Perché con l'ordinamento attuale possiamo semplicemente ricreare un gruppo di oggetti, cosa che era impossibile con l'ordinamento per nome.

 

stringo писал(а) >>

Come per l'ordinamento attuale, potete semplicemente ricreare un gruppo di oggetti, cosa che non era possibile con l'ordinamento per nome.

Tenere un oggetto dall'utente con il mouse rompe il tutto. Tieni conto di questo? Perché era impossibile?