Galeria de UIs escritas em MQL - página 42

 

Adicionado:

As janelas de menu agora sempre permanecem dentro do espaço do gráfico e não saem da visualização. Exemplo:

NÃO ULTRAPASSE A BORDA DIREITA DO GRÁFICO:


NÃO ULTRAPASSE A BORDA INFERIOR DO GRÁFICO:


 
Mais tarde, fornecerei uma lista de recursos que estão prestes a ser implementados, porque já funcionaram em versões anteriores do construtor (4 anos atrás). É bastante realista incluí-los em novas versões.
 

A falta de direções de desenvolvimento priorizadas nunca leva a bons resultados. Uma verdade elementar que todos os desenvolvedores profissionais conhecem. Há 4 anos, eu não conseguia colocar uma versão finalizada do designer porque não tinha um plano para a conclusão. Se eu tivesse um plano, tudo teria sido concluído há muito tempo. O próximo motivo para interromper o projeto são as discussões infrutíferas com as opiniões de outras pessoas no fórum. Debates sobre abordagens de programação ou sobre a necessidade e a desnecessidade da GUI como tal... Infelizmente, foi uma perda de tempo inútil.

Então, qual é a conclusão desse projeto? A resposta a essa pergunta é muito importante porque determina a escolha das direções para o desenvolvimento futuro.

E assim, como eu a apresento:

1. Controle de software dos elementos da interface.

Essa é uma das principais tarefas no momento. Agora o usuário só pode "capturar" eventos da GUI no arquivo de API, mas não pode obter/alterar propriedades de elementos ou valores de parâmetros. Ponderando a complexidade, posso dizer que a tarefa é fácil e será resolvida antes da próxima versão. Fornecer ao usuário acesso programático a um amplo conjunto de elementos da GUI e propriedades das janelas.


2. Tabelas regulares e dinâmicas .

As tabelas regulares já foram implementadas. Seu funcionamento foi testado várias vezes. Recursos como arrastar e soltar colunas e linhas (alterando seu lugar na tabela), recolher/expandir linhas da tabela (adicionando o elemento T_FOLDER) ou ocultar/desativar colunas funcionaram. A integração automática de controles na tabela funcionou. Por exemplo, caixas de seleção, listas suspensas, botões, controles deslizantes, campos de entrada com botões e campos de entrada simples - todos eles foram integrados à tabela por si mesmos quando a palavra-chave IS_TABLE foi adicionada ao cabeçalho do grupo. Os valores nas células podiam ser coloridos de acordo com o valor. As tabelas podem até ser incorporadas em listas de árvores.

No entanto, vale a pena gastar tempo para trazer de volta todos os recursos antigos?

É difícil dizer.

Acho que a primeira coisa a fazer é trazer de volta os recursos básicos das tabelas regulares e garantir que eles funcionem bem. O resto é como se vê.

Mas o principal aspecto da interface de um robô de negociação sério são as tabelas dinâmicas. Aquelas que são capazes de passar por um fluxo interminável de dados da bolsa de valores. Eu nunca as implementei antes.

Conclusão: as tabelas dinâmicas são uma prioridade.

(Precisamos iniciar o desenvolvimento).


3. Listas de árvores.

Elemento de GUI bastante conhecido, refeito muitas vezes antes. E cada vez funcionava melhor. A versão mais recente é particularmente boa, mas ainda não está concluída. Se eu me lembrar dos detalhes, posso terminá-la em um ou dois dias. Mas o quanto você precisa disso em uma GUI? Acho que não fará mal, mas você não deve ficar obcecado com isso.

Conclusão: a lista de árvores não é uma prioridade para o desenvolvimento futuro.

(Eu a terminarei quando tiver tempo).


4. Janelas dinâmicas.

Os mecanismos básicos - redimensionamento, rolagem vertical e horizontal, dimensionamento, adaptação da janela dimensionada à alteração do tamanho do gráfico - já estão funcionando bem. Mas há muitos bugs pequenos e incômodos. Por serem completas, as janelas dinâmicas são ideais para tabelas dinâmicas grandes e listas longas.

Conclusão: concluir as janelas dinâmicas é uma prioridade.

(Pode levar dois ou três dias de trabalho árduo com entusiasmo).


5. Minimizadores de grupos e tabelas.

Os elementos G_FOLDER e T_FOLDER já funcionaram muito bem no passado. Não sei como eles funcionam agora, pois não tive tempo de testá-los. É interessante notar que, no desenvolvimento mais recente da função de fenômeno de elemento, unifiquei o gerenciamento da lista de árvores e esses dois tipos de colapsadores. Uma função gerenciava três elementos e não tinha mais de 400 a 500 linhas de tamanho (o que não é muito para os meus padrões). Se eu conseguir que essa função volte a funcionar (ela está desativada agora), todos os três elementos funcionarão perfeitamente. Vejamos.

Conclusão: os elementos G_FOLDER e T_FOLDER não são prioritários.

(Farei isso se tiver a oportunidade e o desejo).



E a última tarefa prioritária que me veio à mente agora:

6. Criação de um ramo de modelos de grupos de elementos e janelas escritos na linguagem de marcação.

Isso permitirá que os usuários criem de forma rápida e fácil a interface necessária para resolver tarefas, mesmo sem um conhecimento profundo da linguagem.


Se alguém tiver alguma opinião sobre as prioridades para desenvolvimento futuro, compartilhe. Eu tomarei nota.

 

Sim, o gerenciamento de programas é o mais importante, obrigatório para qualquer pessoa que for usar o mecanismo.

Para mim, as tabelas dinâmicas são essenciais. Preciso da interface principalmente para a visualização de eventos e relatórios em tempo real. Os controles são a alça para gerenciá-los (filtros, etc.). Com a implementação disso, poderei começar a integrar o mecanismo.

A segunda prioridade é uma janela de tela cheia. Mas isso é muito simples - você já tem isso feito no designer. Com uma barra de tarefas. E, temporariamente, posso usar a maior janela possível. Tenho que escolher o tamanho, é doloroso.

A terceira prioridade são os gráficos. Não sei se isso é muito difícil. Talvez você deva usar as ferramentas de kanvas padrão, se elas forem suficientemente flexíveis. Nunca tentei nada além do Fast And Furious Easy And Fast v1.

Se Deus quiser, a motivação é suficiente. Na maioria das vezes, ela desaparece depois de um encontro com os odiadores. "As pessoas boas são a maioria, mas as más são mais bem organizadas".

 
Edgar Akhmadeev Os controles são essenciais para gerenciá-los (filtros, etc.). Com a implementação disso, eu poderia começar a integrar o mecanismo.

A segunda prioridade é uma janela de tela inteira. Mas isso é muito simples - você já tem isso feito no designer. Com uma barra de tarefas. E, temporariamente, posso usar a maior janela possível. Tenho que escolher as dimensões, o que é doloroso.

A terceira prioridade são os gráficos. Não sei qual é o grau de dificuldade. Talvez você deva usar as ferramentas de kanvas padrão, se elas forem suficientemente flexíveis. Nunca experimentei, exceto o Fast And Furious Easy And Fast v1.

Se Deus quiser, a motivação é suficiente. Na maioria das vezes, ela desaparece depois de um encontro com os odiadores. "As pessoas boas são a maioria, mas as más são mais bem organizadas".

1. O gerenciamento de itens programáticos estará na próxima versão. Em princípio, em 7 a 10 dias.

2. As tabelas dinâmicas estão "em desenvolvimento". Ainda não sei dizer quanto tempo isso levará. O processo pode ser muito rápido.... ou não tão rápido. Desconhecido.

3. Você já tem uma janela de tela cheia. Experimente. Nas propriedades da janela, escreva "DINAMIC" em vez de "SETTINGS". Faça o teste e escreva sobre suas impressões.(Basta acessar a versão de lançamento em campo do construtor). Você pode alterar o tamanho puxando as bordas da janela ou aplicar zoom com o botão superior. Há uma opção de clicar duas vezes na barra superior (onde está o nome da janela) ou simplesmente pegar a janela pela "tampa" e arrastá-la para cima até que ela se dimensione sozinha. As mesmas manipulações funcionam no sentido inverso.

4. Imprima o arquivo API de sua janela e publique-o aqui. Vou dar uma olhada e entender como as tabelas são impressas lá. Isso é importante para a implementação futura da conexão de software.


5. Vou pensar seriamente sobre gráficos personalizados. Vi a implementação do Anatoly, mas não tentei replicar esse elemento.

 

Uma nuance importante ao trabalhar com uma janela dinâmica:

A janela não aceita elementos do tipo V_BOX, pois eles contêm sua própria tela. Isso resulta na sobreposição de uma tela em outra. Portanto, esse elemento deve ser comentado junto com todas as linhas i, IN, "V1", .

Ou seja, os grupos que são colocados no elemento V_BOX devem ficar apenas na janela "MF". Não é necessário comentar especificamente a linha i, IN, "V1".

Se não funcionar, eu lhe mostrarei mais detalhes amanhã. Em imagens.

 

Um exemplo de conversão da janela de configurações em uma janela dinâmica:

(clique na imagem)

 
A execução foi bem-sucedida, mas parece que você postou um pouco demais para saber como dominar essa biblioteca GUI do zero.
 
Minha expectativa é adicionar mais (7) LESSONS para que os usuários saibam como usar a biblioteca.
 
Quando a caixa de ferramentas é reduzida, a barra de tarefas na parte inferior não responde imediatamente, você precisa alternar para outro gráfico e clicar novamente antes que a barra de tarefas se mova para a parte inferior. Não tenho certeza se isso pode ser melhorado.