Galeria de UIs escritas em MQL - página 41

 

Boa noite, queridos membros do fórum.

Finalmente, chegou a hora de lançar o mecanismo e ajudar aqueles que desejam criar programas grandes e muito legais com uma interface gráfica rica em MQL5. Agora esse objetivo está à distância de um braço.

E assim:

1. A primeira versão do mecanismo. Quero enfatizar a palavra "primeiro". Nada é perfeito na primeira vez. Você provavelmente encontrará erros que eu não notei. Não tem problema. Ainda não encontrei nenhum bug com o qual não tenha lidado. Tudo é resolvido rapidamente.

2. O mecanismo não está totalmente concluído. No momento, o aplicativo"usuário condicional" (1) EA Shell v1.mq5 (especialmente escrito para testar o mecanismo) captura todos os eventos dos controles da GUI criada. Isso já possibilita que o código do usuário reaja de forma programática. Os eventos chegam, trazem valores para os casos necessários da função OnGuiEvent(); é lá, no arquivo API, que o usuário escreverá seu código de reações aos eventos da interface.

3. Muito trabalho foi feito no mecanismo. As alterações afetaram os níveis local e global. Mais adiante, descreverei em detalhes o que exatamente escrevi e refiz durante esse período. A lista será longa.

4. A versão tem instruções de instalação no arquivo ReadMe.txt. Entretanto, adicionarei imagens para maior clareza. Se não estiver claro, pergunte. Eu o ajudarei.


Em geral, pegue a versão e vamos começar.

Arquivos anexados:
 

Como resultado da instalação da nova versão do construtor, você deverá ver um menu de contexto atualizado (clique duas vezes no gráfico):


Se você vir esse menu, significa que a instalação foi bem-sucedida.

 

Esta instalação não é diferente da anterior. As mesmas etapas na mesma ordem.

Há instruções em texto neste blog. E também em fotos:

https://www.mql5.com/ru/blogs/post/758425

KIB-DRIVE instalation instractions
KIB-DRIVE instalation instractions
  • www.mql5.com
This archive contains: //------------------------------------------------------------------------------ 1. Folder     (1) KIB 1.0
 

Separadamente, gostaria de mencionar o novo arquivo EA Shell v1.mq5

Salve-o na pasta EAs, mas compile-o somente depois de imprimir o arquivo API no construtor. Ele trata das conexões em seu cabeçalho.

1. Execute o construtor e o indicador como antes em um gráfico.

2. Abra imediatamente o menu de contexto e imprima os arquivos UIDATA e API.

3. Transfira esses arquivos para a pasta neste caminho:

#include<(2)  KIB PROJECTS\(5) USER PROJECTS\Project 1\

4. Compile o EA Shell v1.mq5 e coloque-o em outro gráfico.

5. Pronto.

 

Uma pequena instrução em imagens:

1.


2.


3.


4.


5.


6.


7.


 
Pequenas instruções de instalação (1) EA Shell v1.mq5 mais...
 

1.



2.


3.



4.



5.



6.



7.


DiscussionForumPosting - Schema.org Type
  • schema.org
Schema.org Type: DiscussionForumPosting - A posting to a discussion forum.
 

As janelas de configurações acima foram criadas para testar a conexão e a resposta a eventos de interface por meio de funcionalidade personalizada.

Para fazer isso, abra o arquivo API e escreva suas chamadas.

Por padrão, os eventos de interface chamam a função Alert() imprimindo seu identificador e o valor do parâmetro em eventos de impacto nos elementos.

 
Testarei a nova versão mais tarde.
 

Uma lista de correções e atualizações nesta e na próxima versão:

Alterações globais:

  • O arquivo Internal_API foi renomeado para simplesmente ARI.
  • Todas as definições e funções que não são relevantes para o trabalho do usuário com controles foram removidas do arquivo API. Parcialmente, elas foram movidas para o arquivo UIDATA.
  • O método de vincular o código do usuário aos controles foi fundamentalmente alterado. O usuário terá acesso direto ao núcleo G_CORE, onde os controles são armazenados. O acesso é realizado por meio de funções de wrapper que são impressas automaticamente no arquivo UIDATA.
  • Um prefixo especial é adicionado aos nomes das funções de wrapper para facilitar a localização dos elementos por meio do intellisense.
  • Foi aberta a possibilidade de criar um menu de contexto para um aplicativo de usuário. Uma área especial no arquivo #include<(2) KIB PROJECTS\(1) Must be included\User section\My menu section.mqh> foi alocada
  • Adicionada a possibilidade de definir botões na parte direita da barra de tarefas do usuário. Uma área especial no arquivo #include<(2) KIB PROJECTS\ (1) Must be included\User section\My Taskbar section.mqh> foi preparada para essa finalidade.
  • O menu de contexto personalizado e a barra de tarefas agora são chamados a partir do menu de contexto do construtor e não interferem na edição de outras janelas:


  • O menu de contexto do usuário pode chamar janelas de menu júnior.

Esta é a aparência após salvar o projeto e alternar para o modo de aplicativo do usuário em outro gráfico: .

  • O comportamento das janelas do menu de contexto é semelhante ao seu comportamento no ambiente de aplicativos do Windows.

  • As opções do menu de contexto podem chamar funções ou janelas. Se um item de menu chamar uma janela, o ícone da janela será automaticamente definido à esquerda.



  • Alterações e aprimoramentos locais:

  • Foi corrigido um problema com o salto da barra de tarefas ao alternar entre gráficos. Agora ela se adapta melhor e mais rapidamente ao redimensionamento da janela.
  • Oscontroles deslizantes funcionam melhor:
  • A guia de valor (S_WIDGET) sempre acomoda os dígitos do valor e assume o tamanho dependendo do tamanho do texto do valor máximo (ou mínimo).
  • O placar é posicionado em um dos 4 lados, conforme desejado pelo usuário (definido por sinalizadores).
  • O controle deslizante alterna qualquer valor em qualquer intervalo com qualquer O controle deslizante alterna qualquer valor em qualquer intervalo com qualquer número de casas decimais e em qualquer etapa especificada.
  • O número de casas decimais (precisão do valor) é definido pelo usuário (palavra DIGITS).
  • O tamanho do controle deslizante e o intervalo de valores não desempenham nenhum papel. O algoritmo calcula o movimento do controle deslizante pelo intervalo de forma que uma extremidade sempre tenha um mínimo e a outra extremidade sempre tenha um máximo.
  • Ao clicar na faixa do controle deslizante, o controle deslizante salta automaticamente para o local do clique e continua a se mover de forma sincronizada com o usuário se o botão do mouse for pressionado.
  • Está planejado adicionar a possibilidade de rolar o controle deslizante pela faixa do controle deslizante com a roda do mouse.


  • Correção de problemas com a lista suspensa.

  • A lista não pula mais quando o botão abrir é clicado.
  • Corrigido o problema de desaparecimento da lista ao rolar para a parte inferior.
  • A lista pode ser rolada com a roda do mouse mesmo que o cursor esteja na barra de rolagem ou nos botões.
  • A rolagem da lista com a roda do mouse agora é mais rápida.


  • Resolvido o problema do falso clique:

  1. Anteriormente, pressionar um botão ou outro elemento semelhante causava uma alteração de estado , mesmo que o pressionamento ocorresse fora do espaço do elemento. Esse problema foi resolvido. Se o usuário clicasse em um elemento, mas mudasse de ideia e afastasse o cursor, ou o movesse para outro elemento ou espaço livre do gráfico, o elemento do primeiro clique sempre retornaria ao estado anterior. Como se nada tivesse acontecido. O evento será cancelado e não haverá alteração no valor do parâmetro. A fixação de falso clique permite cancelar o clique no último momento simplesmente movendo o cursor (com o botão do mouse ainda pressionado) para outro espaço.


  • Foi decidido concentrar-se na criação de modelos para janelas de configurações profissionais semelhantes às do Windows para facilitar a criação pelos usuários. Um bom exemplo dessas janelas são as janelas incluídas Settings example 1 e Settings example 2 (chamadas pelo menu de contexto e pelo uso da barra de tarefas):

  • Foi adicionada a possibilidade de bloquear mensagens.

    Exemplo:

Primeiro abra as diferentes janelas de configurações. Seus botões estão na parte inferior da barra de tarefas. Em seguida, vá para o menu de contexto (clique duas vezes no gráfico) e abra a janela "Sorry, this order is blocked" (Desculpe, esta ordem está bloqueada). Ela está localizada aqui:


Em seguida, tente clicar em qualquer janela aberta anteriormente com a janela "Sorry, this order is blocked" aberta. Todas as ações em outras janelas serão bloqueadas até que essa janela seja fechada. No entanto, você pode limitar a lista de janelas bloqueadas nas propriedades da janela no código cibernético. Assim, algumas janelas serão bloqueadas e outras não. Dependendo da decisão do usuário.


  • Agora, as janelas de diálogo podem ser abertas com som. Isso é definido por meio do código KIB nas propriedades da janela.
  • As janelas de diálogo têm uma prioridade especial sobre outras janelas e são sempre desenhadas sobre as janelas de configurações.
  • Os botões das janelas de diálogo (Ok, Cancelar, Confirmar, Fechar) funcionam e fecham suas janelas automaticamente quando pressionados.


  • As caixas de diálogo podem ter seu recurso de minimização desativado. Nesse caso, elas não podem aparecer na barra de tarefas.


  • O nome da janela pode estar localizado à esquerda ou no centro. Ele é definido por um sinalizador nas propriedades da janela (cyb-code).
  • As janelas de diálogo podem ser chamadas de forma programática a partir do aplicativo do usuário.
  • As janelas de diálogo podem ser fechadas automaticamente ao se clicar em outra janela ou gráfico. A possibilidade é definida pelo usuário nas propriedades da janela no cyb-code.