Discussão do artigo "Linguagem MQL como um meio de marcação da interface gráfica de programas MQL. Parte 1"

 

Novo artigo Linguagem MQL como um meio de marcação da interface gráfica de programas MQL. Parte 1 foi publicado:

O artigo propõe uma nova ideia para descrever a interface de programas MQL com ajuda das construções da linguagem MQL. As classes especiais transformam o esquema visual MQL em elementos da GUI, permitem gerenciá-los de maneira unificada, configurar propriedades e processar eventos. Além disso, apresenta exemplos de uso de layouts para caixas de diálogo e elementos da biblioteca padrão.

Para que separar o layout do código e descrevê-lo numa linguagem especial? Aqui estão as principais vantagens dessa abordagem.

  • visualização clara de relações hierárquicas entre elementos e contêineres;
  • agrupamento lógico;
  • tarefas de posicionamento e alinhamento unificadas;
  • registro simples de propriedades e valores;
  • declarações permitindo a geração automática de código que suporta o ciclo de vida e o gerenciamento de elementos (criação, configuração, experiência interativa, exclusão);
  • nível generalizado de abstração (propriedades gerais, estados, fases de inicialização e processamento), o que permite o desenvolvimento de uma GUI independentemente da codificação;
  • uso repetido (numeroso) de layouts (o mesmo fragmento pode ser incluído em várias caixas de diálogo várias vezes);
  • implementação/geração dinâmica de conteúdo em tempo real (semelhante à alternância de indicadores, cada um com seu próprio conjunto de elementos);
  • criação dinâmica de "controles" dentro do layout, salvando-os numa única matriz de ponteiros para a classe base (como CWnd no caso da biblioteca MQL padrão);
  • uso de um editor gráfico separado para o design de interface interativa, nesse caso, um formato especial de descrição de layout atua como um link entre a representação externa do programa e sua parte executiva na linguagem de programação;

Para o ambiente MQL, fizemos algumas tentativas para resolver alguns desses problemas. Em particular, o designer visual das caixas de diálogo é apresentado no artigo Como projetar e construir classes de objeto, ele funciona com base na biblioteca MasterWindows. Mas seus os métodos de layout e sua lista de tipos de elementos suportados são muito limitados.

Nos artigos Usando layouts e contêineres para controles de GUI: a classe cbox e classe cgrid é sugerido um sistema de layout mais avançado, mas sem um designer visual. Ele suporta todos os controles padrão e outros herdados de CWndObj ou CWndContainer, mas o usuário ainda deve lidar nele com tarefas rotineiras para criar e colocar componentes.

Conceitualmente, essa abordagem com contêineres é muito avançada (basta apontar sua popularidade em quase todas as linguagens de marcação) e, portanto, vamos adotá-la. Num dos meus artigos anteriores (Implementado OLAP na negociação (Parte 2): Visualizando resultados da análise interativa de dados multidimensionais), propus uma modificação dos contêineres CBox e CGrid, além de alguns controles para apoiar as propriedades de "borracha". Em seguida, usaremos esses desenvolvimentos e melhorá-los para resolver o problema do posicionamento automático de elementos usando os objetos da biblioteca padrão como exemplo.

Autor: Stanislav Korotky

Razão: