Discussão do artigo "Guia prático do MQL5: Controles de sub-janela indicadora - botões"

 

Novo artigo Guia prático do MQL5: Controles de sub-janela indicadora - botões foi publicado:

Neste artigo, vamos considerar um exemplo de desenvolvimento de uma interface de usuário com controles de botão. Para transmitir a ideia de interatividade ao usuário, os botões mudarão suas cores quando o cursor passar sobre eles. Com o cursor sobre um botão, a cor do botão será ligeiramente escurecida, ficando significativamente mais escura quando o botão for clicado. Além disso, adicionaremos janelas pop-up em cada botão, criando assim, uma interface intuitiva.

O artigo também cobrirá alguns eventos: movimento do mouse, estado do botão esquerdo do mouse, clique do botão esquerdo do mouse em um objeto e evento de modificação de propriedades de gráfico. Nós vamos criar um painel de botões que vai ocupar todo o espaço da sub-janela indicadora. Para fins ilustrativos, os botões serão dispostos em três fileiras, com quatro botões em cada linha.

Fig. 1. Botões adicionados à sub-janela indicadora

Autor: Anatoli Kazharski

 

Bom artigo para iniciantes. Entretanto, em interfaces mais complexas, essa abordagem não é mais aceitável. A primeira coisa que chama sua atenção:

for(int i=0; i<BUTTON_COLUMNS; i++)
     {
      for(int j=0; j<BUTTON_ROWS; j++)
        {
            ...
      ...
...
Ou seja, uma estrutura de tabela rígida é costurada no algoritmo e essa construção é encontrada em quase todas as funções. Agora vamos imaginar que a subjanela contém vários elementos gráficos que não estão relacionados à tabela de forma alguma. Para eles, teremos de descrever seu próprio modelo de posicionamento, e isso não é bom. O modelo de posicionamento deve ser único e universal, ou seja, nesse caso, o layout da "tabela" deve ser um caso especial desse modelo.
 
C-4:

Bom artigo para iniciantes. Entretanto, em interfaces mais complexas, essa abordagem não é mais aceitável. A primeira coisa que chama sua atenção:

Ou seja, uma estrutura de tabela rígida é costurada no algoritmo e essa construção é encontrada em quase todas as funções. Agora vamos imaginar que a subjanela contém vários elementos gráficos que não estão relacionados à tabela de forma alguma. Para eles, teremos de descrever seu próprio modelo de posicionamento, e isso não é bom. O modelo de posicionamento deve ser único e universal, ou seja, nesse caso, o layout da "tabela" deve ser um caso especial desse modelo.

Sim, você está certo. Tentarei pensar em algo mais original da próxima vez. )

Nesse caso, para fugir do caso especial, basta usar uma matriz unidimensional e um loop.

 

Não entendo por que você deve usar o OBJ_EDIT.

Teria sido muito mais útil "reviver" os botões padrão da biblioteca (para que eles também brilhassem sob o mouse).

Ou seja, parece ser um artigo útil, mas não entendo por que essa forma foi escolhida.

ps: invejo a fecundidade do autor ;)

 
komposter:

...

Já estou acostumado a usar o OBJ_EDIT, pois ele é exibido durante a visualização no testador.

Nesse caso, você poderia usar qualquer objeto para o exemplo. Afinal, trata-se de um processo criativo. )

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

Não entendo por que você deve usar o OBJ_EDIT.

Seria muito mais útil "reviver" os botões padrão da biblioteca (para que eles também brilhem sob o mouse).

Ou seja, parece ser um artigo útil, mas não entendo por que essa forma foi escolhida.

ps: invejo a fecundidade do autor ;)

Na realidade, os botões padrão são elementos de controle muito escorregadios, porque, em primeiro lugar, não suportam a cor do quadro (embora seja muito estranho o motivo) e, em segundo lugar, dependendo do tipo de quadro BORDER_FLAT, BORDER_RAISED, visualmente posicionado claramente fora de sua localização, não estou dizendo que, além disso, mudam sua tonalidade dependendo do estado de pressão e são muito lentos para mudar sua exibição sem o ChartRedraw. Na realidade, o botão, com exceção de sua interface cortada à la Windows 3.11, não oferece nenhuma vantagem em relação a outros elementos. Sim, há um campo especial OBJ_SELECTED, que indica se o botão está pressionado ou não, mas, na realidade, não há problemas em criar seu próprio objeto OBJ_EDIT, que contém o sinalizador de pressionamento.
 
E os botões não são botões de fato).
 
komposter:

Seria muito mais útil "animar" os botões padrão da biblioteca (para que eles também brilhem com o mouse).

E eu me pergunto: existe algum desenvolvedor profissional que usaria a biblioteca padrão de elementos gráficos em seus produtos?
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
zfs:
E os botões não são realmente botões).
Um botão é qualquer coisa que você possa apertar. ))
 
C-4:
E eu me pergunto: existe algum desenvolvedor profissional que usaria a biblioteca padrão de elementos gráficos em seus produtos?
Acho que há produtos no mercado com interfaces cujos elementos se assemelham aos usados na biblioteca padrão.
 

Gostaria de saber se, quando estava preparando o material, você leu esse artigo?