Discussão do artigo "Linguagem MQL como um meio de marcação da interface gráfica de programas MQL (Parte 3). Designer de formulários"

 

Novo artigo Linguagem MQL como um meio de marcação da interface gráfica de programas MQL (Parte 3). Designer de formulários foi publicado:

Este artigo complementa a descrição da ideia de como construir uma interface de programa MQL com ajuda das construções da linguagem MQL. Um editor gráfico especial nos permitirá configurar interativamente um layout consistindo nas principais classes de elementos da GUI e, em seguida, as exportará para uma descrição MQL que será usada em nosso projeto MQL. Aqui são apresentados detalhes internos do editor e o manual do usuário. Códigos fonte estão anexados ao artigo.

O editor é projetado para classes de elementos de interface da Biblioteca Padrão. Para criar ferramentas semelhantes para outras bibliotecas, precisaremos escrever implementações concretas de todas as entidades abstratas desde o sistema de layout proposto. Adicionalmente, devemos nos orientar pela implementação de classes de layout para a Biblioteca Padrão.

Deve-se notar que o nome "biblioteca de componentes padrão" não corresponde exatamente à realidade, uma vez que no contexto de artigos anteriores já tivemos que modificá-la significativamente e exibi-la como uma ramificação de versão paralela na pasta ControlsPlus. Para os fins deste artigo, continuaremos a usá-la e modificá-la.

Vamos listar os tipos de elementos que o editor suportará.

  • contêineres CBox com orientação horizontal (CBoxH) e vertical (CBoxV),
  • botão CButton,
  • campo de entrada CEdit,
  • rótulo CLabel,
  • campo de entrada com iteração de valores SpinEditResizable,
  • calendário CDatePicker,
  • lista suspensa ComboBoxResizable,
  • lista ListViewResizable,
  • grupo de botões de opção independentes CheckGroupResizable,
  • grupo de botões de opção RadioGroupResizable.

Todas as classes facilitam o redimensionamento adaptável (alguns tipos padrão tinham isso desde o início, outros receberam modificações significativas).

Processo de edição de formulário

Processo de edição de formulário

Autor: Stanislav Korotky

 
Isso foi poderoso!
 
Parabéns!!! Ótimo trabalho e artigos.
 
Finalmente, uma competição decente (estou me referindo ao resultado). Agora, aguardem! )))))
 

O editor visual ainda deve incluir a edição manual de elementos - esticar, mover, digitar texto, copiar e assim por diante. A marcação auxiliar é desejável.

Esse editor se mostra promissor, embora eu não tenha ideia de como o autor cumpre os outros requisitos, pois não entendo sua tecnologia. Ele "ficou sobre os ombros" da biblioteca padrão e, por um lado, deu um poderoso impulso, mas, por outro lado, faz com que você herde suas limitações. Ela não foi projetada para transformação em larga escala... Muitas funcionalidades terão de ser adicionadas de cima para baixo.

Lista de requisitos para o futuro editor:

1. Personalização manual de elementos.

2. Cópia de elementos.

3. gerenciamento simultâneo de propriedades de um conjunto de elementos.

4. Enquadramento auxiliar.

5. Modo de várias janelas.

6. Criação de janelas de diferentes tipos.

7. Suporte a propriedades de janelas: "sempre no topo", bloqueando outras, com/sem minimização.

8. Edição paralela de janelas.

9. Exclusão de janelas.

Isso é tudo por enquanto.


ZY: Até onde sei, os controladores SB consistem em objetos MT, o que, por um lado, simplifica o sistema de interação com os elementos e o ajuste manual (há muito tempo, eu tinha um editor baseado em objetos MT e não foi difícil criá-lo), por outro lado (se você aceitar essa simplificação), tira todas as vantagens do kanvas (entre elas, velocidade, efeitos visuais e muito mais). Ou seja, o "efeito de doping" do uso do SB ao criar um editor limita severamente seu desenvolvimento. Mas, vejamos...

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 
É interessante notar que, mesmo sem um kanvas, o autor pode fazer uma marcação auxiliar se resolver o problema da configuração manual dos elementos. Foi isso que eu fiz. É claro que a marcação na tela é visualmente mais legal, mas no editor Sharpe, por exemplo, a marcação, embora esparsa, é prática. Apenas algumas linhas ajudam a posicionar os controladores. Fiquei surpreso quando dei uma olhada nisso depois de fazer minha marcação.

A barra de tarefas também precisa ser criada. De preferência.
 
Isso é muito bom!
Parabéns!

É incrível como o MT5 está ficando cada vez melhor com o passar do tempo.
Em um futuro próximo, acho que qualquer pessoa será capaz de criar e configurar qualquer interface gráfica que atenda às suas necessidades.
 
Um novo exemplo de um programa com GUI criado pelo design de layout MQL declarativo foi publicado na base de código - ChartBrowser.
ChartBrowser
ChartBrowser
  • www.mql5.com
This is an utility which allows you to list all open charts, indicators, expert advisers, and scripts in alphabetic order, and switch between them.
 

Hi,

Estou enfrentando esse tipo de situação em um dos meus laptops.

Tudo parece minúsculo, exceto os rótulos de texto.

O valor de "TerminalInfoInteger(TERMINAL_SCREEN_DPI)" é 192.

Você sabe como resolver isso? Achei que as bibliotecas se ajustariam automaticamente de acordo com as configurações da minha tela.


 
Guilherme Mendonca #:

Hi,

Estou enfrentando esse tipo de situação em um dos meus laptops.

Tudo parece minúsculo, exceto os rótulos de texto.

O valor de "TerminalInfoInteger(TERMINAL_SCREEN_DPI)" é 192.

Você sabe como resolver isso? Achei que as bibliotecas se ajustariam automaticamente de acordo com as configurações da minha tela.


Infelizmente, não tenho meios de testá-las em ambientes diferentes. A biblioteca é baseada em controles padrão (com pequenas correções não relacionadas ao dpi). Portanto, se houver alguma falha, esse parece ser um problema comum, não da biblioteca.

Mas acho que você deve primeiro verificar a configuração de escala do Windows.

 
Guilherme Mendonca #:

Estou enfrentando esse tipo de situação em um dos meus laptops.

Apenas uma ideia: tente corrigir o Defines.mqh para:

#define  CONTROLS_FONT_SIZE                  (-10)

O sinal de menos é adicionado.

Ou outra ideia:

#define  CONTROLS_FONT_SIZE                  ((int)(10.0 / (TerminalInfoInteger(TERMINAL_SCREEN_DPI) / 96.0)))
Informe-me se alguma das variantes ajudar.