Discussione sull’articolo "Manuale MQL5: Controlli della finestra secondaria dell'indicatore - Pulsanti"

 

Il nuovo articolo Manuale MQL5: Controlli della finestra secondaria dell'indicatore - Pulsanti è stato pubblicato:

In questo articolo considereremo un esempio di sviluppo di un'interfaccia utente con controlli a pulsante. Per trasmettere l'idea di interattività all'utente, i pulsanti cambiano colore quando il cursore passa sopra di essi. Con il cursore posizionato su un pulsante, il colore del pulsante sarà leggermente più scuro, diventando notevolmente più scuro quando si fa clic su di esso. Inoltre, aggiungeremo suggerimenti a ciascun pulsante, creando così un'interfaccia intuitiva.

Notare l'ultimo parametro della funzione CreateButton(): è responsabile del suggerimento quando il cursore del mouse passa su un oggetto grafico. Ad esempio, nella funzione AddButtonsPanel() questo parametro è rappresentato dai valori passati dall'array button_texts (testo visualizzato sui pulsanti). Se lo desideri, puoi creare un array separato con descrizioni più dettagliate.

Ora, se colleghi l'indicatore al grafico, il risultato sarà il seguente:

Fig. 1. Pulsanti aggiunti alla sottofinestra dell'indicatore


Autore: Anatoli Kazharski

 

Un buon articolo per i principianti. Tuttavia, nelle interfacce più complesse questo approccio non è più accettabile. La prima cosa che salta all'occhio:

for(int i=0; i<BUTTON_COLUMNS; i++)
     {
      for(int j=0; j<BUTTON_ROWS; j++)
        {
            ...
      ...
...
Una rigida struttura a tabelle è inserita nell'algoritmo e questa costruzione è presente in quasi tutte le funzioni. Immaginiamo ora che la sottofinestra contenga diversi elementi grafici che non sono in alcun modo collegati alla tabella. Per questi elementi dovremo descrivere il loro modello di posizionamento e questo non va bene. Il modello di posizionamento dovrebbe essere unico e universale, cioè in questo caso il layout "tabella" dovrebbe essere un caso speciale di questo modello.
 
C-4:

Un buon articolo per i principianti. Tuttavia, nelle interfacce più complesse questo approccio non è più accettabile. La prima cosa che salta all'occhio:

Una rigida struttura a tabelle è inserita nell'algoritmo e questa costruzione è presente in quasi tutte le funzioni. Immaginiamo ora che la sottofinestra contenga diversi elementi grafici che non sono in alcun modo collegati alla tabella. Per questi elementi dovremo descrivere il loro modello di posizionamento e questo non va bene. Il modello di posizionamento dovrebbe essere unico e universale, cioè in questo caso il layout "tabella" dovrebbe essere un caso speciale di questo modello.

Sì, hai ragione. Cercherò di proporre qualcosa di più originale la prossima volta. )

In questo caso, per uscire dal caso speciale, è sufficiente utilizzare un array monodimensionale e un ciclo.

 

Non capisco perché si debba usare OBJ_EDIT.

Sarebbe stato molto più utile "rianimare" i pulsanti standard della libreria (in modo che si illuminassero anche sotto il mouse).

Insomma, sembra un articolo utile, ma non capisco perché sia stato scelto questo modo.

ps: invidio la fecondità dell'autore ;)

 
komposter:

...

Sono già abituato a usare OBJ_EDIT, poiché viene visualizzato durante la visualizzazione nel tester.

In questo caso, si può utilizzare qualsiasi oggetto per l'esempio. Si tratta di un processo creativo, dopotutto. )

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
komposter:

Non capisco perché si debba usare OBJ_EDIT.

Sarebbe molto più utile "rianimare" i pulsanti standard della libreria (in modo che si illuminino anche sotto il mouse).

Insomma, sembra un articolo utile, ma non capisco perché sia stato scelto questo modo.

ps: invidio la fecondità dell'autore ;)

In realtà, i pulsanti standard sono un elemento di controllo molto scivoloso, perché in primo luogo non supporta il colore della cornice (anche se è molto strano il motivo), e in secondo luogo, a seconda del tipo di cornice BORDER_FLAT, BORDER_RAISED posizionato visivamente chiaramente al di fuori della sua posizione, non dico che oltre a questo cambiare la loro ombra a seconda dello stato di pressione e molto lento a cambiare la sua visualizzazione senza ChartRedraw. In realtà, il pulsante, a parte la sua interfaccia spezzettata alla Windows 3.11, non dà alcun vantaggio rispetto ad altri elementi. Certo, esiste un campo speciale OBJ_SELECTED, che indica se il pulsante è premuto o meno, ma in realtà non ci sono problemi a creare il proprio oggetto OBJ_EDIT, contenente il flag di pressione.
 
E i pulsanti non sono affatto pulsanti).
 
komposter:

Sarebbe molto più utile "animare" i pulsanti standard della libreria (in modo che si illuminino anche sotto il mouse).

E mi chiedo: c'è un solo sviluppatore professionista che utilizzerebbe la libreria standard di elementi grafici nei suoi prodotti?
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
zfs:
E i pulsanti non sono affatto pulsanti).
Un pulsante è qualsiasi cosa che si possa premere. ))
 
C-4:
E mi chiedo: c'è qualche sviluppatore professionista che utilizzerebbe la libreria standard di elementi grafici nei suoi prodotti?
Penso che ci siano prodotti sul mercato con interfacce i cui elementi assomigliano a quelli utilizzati nella libreria standard.
 

Mi chiedo: quando stavate preparando il materiale, avete letto questo articolo?