Galeria de UIs escritas em MQL - página 45

 
hini #:
Baixei o gif, não tenho certeza se é um problema com meu sistema operacional. Só estou informando.
Obrigado por informar o problema. Não testei essa opção de redimensionamento do gráfico. Vou verificar o evento em OnChartEvent().


 
hini #:
Baixei o gif, não tenho certeza se é um problema com meu sistema operacional. Só estou relatando o problema.
Sim, encontrei a causa. O redimensionamento do gráfico de diferentes maneiras gera diferentes combinações de eventos OnChartEvent(). Ao alterar manualmente, o evento OnChartChange aparece duas vezes (eu verifiquei). Ao alternar os gráficos - uma ou duas vezes. Ao fechar a janela do navegador uma vez, mas outros eventos chegam como CharEvent Custom. Ao mover a janela do terminal para outro monitor - uma vez.

Em geral, é necessário escrever condições que capturem todas as variantes de combinações de eventos ao alterar os tamanhos dos gráficos.
 
Gostaria de acrescentar por que você não pode simplesmente verificar os tamanhos dos gráficos comparando-os com os registrados anteriormente.

Ao alternar os gráficos, as funções ChartGetInteger() dos tamanhos dos gráficos enviam valores incorretos, de modo que o algoritmo "pensa" que os tamanhos foram alterados e a barra de tarefas "pula" de seu lugar. Tive que me esforçar muito para contornar esse problema. Agora vou verificar quais valores de tamanhos de gráfico são informados às funções ChartGetInteger() nesses eventos.
 
Ou seja, ao alternar entre os gráficos, os tamanhos não mudam, mas o evento ChartChange aparece, mas a função ChartGetInteger(), por algum motivo, SEMPRE informa os tamanhos 480 (largura) e 167 (altura). Sempre e em qualquer tamanho de gráfico. (Build 2470. Ainda não verifiquei a nova versão).
 
Na nova compilação (4435), ao alternar os gráficos, a função ChartGetInteger() retorna os valores 490 de largura e 103 de altura. Os tamanhos reais do gráfico são 1068 de largura e 438 de altura.

Observe que os tamanhos não mudam ao alternar entre os gráficos.
 
Com base nessas condições, continuarei a estudar as peculiaridades dos eventos de entrada para distinguir as alterações reais nos tamanhos dos gráficos das alterações errôneas. E quando os desenvolvedores corrigirem a função, eu simplesmente simplificarei o código. :)
 
Testei diferentes eventos de redimensionamento de gráficos. O problema parece ser apenas com a troca de gráficos, em que não ocorre nenhum redimensionamento real. Mas a função ChartGetInteger() relata persistentemente 490 a 103.

Nos outros eventos, tudo está bem.


Correção da barra de tarefas na próxima versão.
 
Реter Konow de redimensionamento de gráficos. O problema parece ocorrer apenas quando o gráfico é alternado e, nesse caso, não há redimensionamento real. No entanto, a função ChartGetInteger() informa consistentemente 490 a 103.

Todos os outros eventos estão corretos.


O problema da barra de tarefas será corrigido na próxima versão.
Obrigado por seu trabalho árduo! Aguardamos ansiosamente seu trabalho.
 
hini #:
Obrigado pelo trabalho que você fez! Estou ansioso para ver seu trabalho.
Muito obrigado!
 

Limpei, recompilei e reinstalei.

Vou listar o que notei, sem nenhuma ordem específica:

1. Após abrir uma janela, nada aparece na barra de tarefas. Depois de minimizar a janela, o botão aparece. Após o desdobramento, ele não desaparece. Se o conceito de comportamento "como no Windows" for concebido, ele deverá aparecer imediatamente.

2. Com uma janela dinâmica, depois que o cursor é movido sobre os botões de minimizar e maximizar, eles permanecem realçados enquanto o cursor estiver dentro da janela.

3) Com uma janela dinâmica, o cabeçalho fica cinza após a expansão, permanece cinza após o retorno e restaura a cor somente após a minimização e o retorno.

4. A janela expandida não oculta as escalas de tempo e preço no gráfico.

5. Uma tabela colocada em"H_TAB, "Report" pelo comando"i, AT, _X2X, "MF", 5, _Y2H, "Report", 5" ignora a configuração da borda esquerda. O mesmo ocorre com"i, AT, _X2X, "MF", 5, _Y2Y, "MF", 20,".

6. O mais importante. O fato de a janela dinâmica não permitir V_BOX mudou completamente meu projeto. As duas tabelas estavam em suas próprias caixas para facilitar o posicionamento e a rolagem. Agora que tive de desenhá-las diretamente na "MF", não posso posicionar a tabela inferior imediatamente abaixo da tabela superior. Vinculação "i, AT, _X2X, "MF", 5, _Y2H, "Table1", 5," não funciona porque o nome do grupo Table1 não é um elemento. Consegui vincular à última linha da tabela, mas com uma tabela dinâmica isso não é uma opção. Ainda não descobri como fazer referência à tabela e não ao grupo. Se a intenção é adicionar linhas à tabela de forma programática, então a forma de endereçamento da tabela é assumida.

7. Mais uma coisa. Sua janela dinâmica é uma janela de pares que pode ser expandida e recolhida. Eu gostaria de ter não uma janela, mas uma área de trabalho. Como em seu construtor. Para que ela

a) abra expandida de uma vez, cobrindo todo o gráfico

b) não tenha um cabeçalho e um quadro (apenas uma barra de tarefas)

c) não possa ser recolhida

d) permita que você coloque itens como uma janela normal.

Ou seja, substitua DINAMIC por FULLSCREEN ou DESKTOP. Você já tem a base para isso.