Galeria de UIs escritas em MQL - página 59

 
O diretório ainda está em russo ...... Espero que seja possível ter o diretório e os nomes de arquivos em inglês, como KIB PROJECTS ...... Essa é uma pequena solicitação minha!
 
#include<(2)  KIB PROJECTS\(6) DEMO PROJECTS\Demo project 1.mqh>

O projeto de demonstração 1 está incluído em (1) KIB-source v1, mas por que não vejo a janela relacionada no diagrama?

 
hini #:
O catálogo ainda está em russo ...... Espero que seja possível ter o catálogo e os nomes dos arquivos em inglês como KIB PROJECTS ....... Essa é uma pequena solicitação minha!
É claro que traduzirei os catálogos para o inglês antes de fazer o upload para o kodobase. Mas ainda não tive tempo. Esta é uma versão provisória para testes públicos.
 
hini #:

O projeto de demonstração 1 está incluído em (1) KIB-source v1, mas por que não vejo a janela associada no diagrama?

Isso é estranho. Vou verificar agora.
 
hini #:

O projeto de demonstração 1 está incluído em (1) KIB-source v1, mas por que não vejo a janela associada no diagrama?

Verifiquei a montagem. O Demo-project 1.mqh está localizado aqui:

(2) KIB PROJECTS\(6) DEMO PROJECTS\Demo project 1.mqh


 
Farei uma análise completa do lançamento um pouco mais tarde.
 

Ontem, depois de fazer o download da nova versão, depois de muito trabalho e de estar emocionado, escrevi uma postagem muito positiva elogiando literalmente a nova funcionalidade. Esse entusiasmo não é muito apropriado no contexto de uma discussão técnica rigorosa. Hoje, quero analisar as soluções implementadas de forma calma e imparcial. Receberei de bom grado críticas construtivas e avaliações objetivas. É importante para mim ter clareza sobre o ponto de vista de usuários terceiros. O feedback ajudará a fazer ajustes e aprimoramentos. E, é claro, para detectar e corrigir bugs.

 
Vamos ao detalhamento do lançamento.
 
Começarei em uma nova página para que as informações importantes permaneçam visíveis por mais tempo.
 


A tarefa foi definida para implementar a interação programática do código do usuário com a interface gráfica do programa.

De acordo com a ideia:

  • Depois de escrever e depurar o código KIB, o usuário obtém o resultado desejado (na forma de janelas prontas) e salva o projeto.
  • Como resultado da geração, há dois arquivos: technical UIDATA.mqh e "API.mqh". O primeiro é necessário para carregar e operar a interface, e o segundo, para fixar eventos de elementos.
  • O usuário transfere ambos os arquivos da pasta Files para o seu projeto (atualmente: KIB PROJECTS\(5) USER PROJECTS\Project 1).
  • Compila seu Expert Advisor ou indicador com as linhas que conectam o mecanismo e os dois arquivos:
//+------------------------------------------------------------------+
#include<(1)  KIB 1.0\(4) CONNECTIONS\KIB-DRIVE CONNECTIONS.mqh>
//--------------------------------------------------------------------
#include<(2)  KIB PROJECTS\(5) USER PROJECTS\Project 1\UIDATA.mqh>
//--------------------------------------------------------------------
#include<(2)  KIB PROJECTS\(5) USER PROJECTS\Project 1\API.mqh> 
//+------------------------------------------------------------------+
  • Lança o EA no gráfico e vê a interface.
O EA Shell v1.mq5 é usado como exemplo no projeto de demonstração , que "representa" um programa de usuário. Ele tem conexões idênticas que são necessárias para o analógico do usuário .

//----------------------------------------------------------------------------------

Entretanto, antes dessa versão, o usuário só podia receber eventos de elementos interativos em um arquivo de API com subchave.

É importante enfatizar: o usuário não tinha muitos recursos de software absolutamente essenciais.

Vou listá-los:

  • Abrir/fechar janelas da GUI de forma programada.
  • Obter/definir valores no parâmetro de diferentes tipos de elementos.
  • Alterar os estados dos elementos de forma programática: por exemplo,ligar/desligar, bloquear/desbloquear elementos em ações do usuário ou em eventos externos fixados pelo Expert Advisor/indicador em execução.
  • Obter/definir programaticamente outros valores das propriedades do elemento: base, texto, cor do quadro. Alterar o ícone.


Essa atualização resolve quase todas as tarefas definidas.



Vou listá-las:.
  • O usuário pode abrir/fechar janelas da GUI por chamada de programa.
  • O usuário pode obter/definir valores no parâmetro dos elementos que o possuem. Incluindo elementos não interativos, como células de tabela (CELL) e rótulos de texto com um parâmetro (VALUE).
  • A alternância de programa entre dois e quatro estados de diferentes tipos de elementos está implementada. Para botões e caixas de seleção, estão disponíveis quatro estados de comutação de software (ligado/desligado/bloqueado ligado/desligado bloqueado), para outros elementos - dois (bloqueado/desbloqueado).
  • Pequenos conjuntos de propriedades de elementos individuais estão disponíveis para valores de retorno/definição de programa. Cada conjunto é representado por um prefixo que abre com uma lista de intellisense. Ele generaliza um grupo pequeno e relacionado de elementos com propriedades semelhantes. Essa abordagem elimina a confusão na multiplicidade de propriedades de diferentes tipos de elementos.
  • A definição programática de um valor para um parâmetro envia o evento para o local do elemento no arquivo de API, onde o usuário pode escrever código adicional para lidar com ele.
  • As células da tabela são nomeadas automaticamente dobrando o nome de sua linha e coluna. Elas recebem um nome e um wrapper funcional no arquivo UIDATA.mqh. No entanto, elas não estão presentes no arquivo API porque não são elementos interativos. Eles podem ser encontrados na lista de elementos da janela e, de outra forma, respondem ao controle do software como todos os elementos.


Devido às possibilidades de controle do programa, coisas que não estavam disponíveis antes foram realizadas:

1. Envio de valores. Obter o valor de um elemento e encaminhá-lo a outros elementos na mesma janela ou em outra.

2. Abertura de janelas de aviso e diálogo pelo software. Por exemplo, em uma situação em que é necessário exibir uma mensagem urgente ou uma recomendação a um usuário.

3. Obtenção de uma visão geral das configurações e do status da execução por meio de consultas aos parâmetros do elemento. Pode ser usado como complemento para análises de outros parâmetros do programa.

4. Redefinição dinâmica das configurações do programa sem interromper o processo de trabalho.

5. Graças à possibilidade de alterar as cores das bases, do texto e dos quadros (ainda não há quadros), a interface se torna mais interativa e informativa. Por exemplo, quando você retrocede um valor e ele entra na zona de risco, o campo de entrada com botões pode sinalizar ao usuário sobre o perigo por meio da cor vermelha da base ou do texto. Isso agora é fácil de implementar. O mesmo se aplica à barra deslizante. Na zona de valores perigosos, você pode alterar programaticamente a cor da barra. Isso acaba sendo interativo, informativo e prático.


Até o momento, ainda não compreendi totalmente todas as possibilidades futuras e tenho certeza de que há muito mais por vir.


A seguir, vamos passar para a parte prática de quebrar a nova versão.