Discussão do artigo "DoEasy. Controles (Parte 32): "ScrollBar" horizontal, rolagem com a roda do mouse"

 

Novo artigo DoEasy. Controles (Parte 32): "ScrollBar" horizontal, rolagem com a roda do mouse foi publicado:

Neste artigo, concluiremos o desenvolvimento do funcional do objeto de barra de rolagem horizontal. Vamos habilitar a capacidade de rolar o conteúdo do contêiner movendo o controle deslizante da barra de rolagem e girando a roda do mouse. Além disso, faremos adições à biblioteca para acomodar a nova política de execução de ordens e os novos códigos de erro de tempo de execução no MQL5.

Para o teste, usaremos o Expert Advisor do último artigo sem nenhuma alteração. Para o teste, pegaremos o EA da postagem anterior sem quaisquer alterações. Vamos compilá-lo e executá-lo no gráfico, definindo "No" para a opção de redimensionamento automático do contêiner ao iniciar:



Verificaremos o funcionamento de todos os componentes do novo funcional da barra de rolagem horizontal:


Tudo está funcionando como planejado.

Autor: Artyom Trishkin

 
Artem, e quanto à biblioteca, ela se desenvolverá mais? Na minha opinião, precisamos investigar mais. Anatoly, por exemplo, parou de apoiar publicamente sua biblioteca por motivos bem conhecidos ((
 
Denis Kirichenko #:
Artem, e quanto à biblioteca, ela se desenvolverá mais? Na minha opinião, precisamos investigar mais. Anatoly, por exemplo, parou de apoiar publicamente sua biblioteca por motivos bem conhecidos ((

Sim, é claro que vai. Fiz uma pausa na publicação. Há um bug visual que é muito desagradável aos olhos - as áreas cortadas às vezes são desenhadas com cintilação. Em algum lugar, há um redesenho prematuro e desnecessário do gráfico. Ainda não encontrei o ponto - há muitas interconexões - uma coisa você cura, outra você incapacita....

Quando encontrar o problema, vou corrigi-lo e continuar.

 
Artyom Trishkin #:

Sim, claro que sim. Fiz uma pausa nas postagens. Há um erro visual que é muito desagradável aos olhos - as áreas cortadas às vezes são desenhadas com uma cintilação. Em algum lugar, há um redesenho prematuro e desnecessário do gráfico. Ainda não encontrei o ponto - há muitas interconexões - uma coisa você cura, outra você incapacita....

Assim que o encontrar, vou corrigi-lo e continuar.

Também enfrentei esse problema e o resolvi da seguinte maneira:

class CCanvas_my:public CCanvas
  {
public:
   bool              Resize(const int width,const int height);
  };

bool CCanvas_my::Resize(const int width,const int height)
  {
   if(m_rcname!=NULL && width>0 && height>0)
      if(ArrayResize(m_pixels,width*height)>0)
        {
         m_width =width;
         m_height=height;
        }
   return true;
  }

Substituindo a função padrão de redimensionamento da tela. Se tudo estiver bem em seu código, não haverá redesenhos desnecessários.

Eu tenho esse nível de interface gráfica, são usados 10 objetos CCanvas (herdeiros):


 
Aliaksandr Hryshyn #:

Também encontrei esse problema e o resolvi da seguinte maneira:

Substituindo a função padrão de redimensionamento do kanvas. Se tudo estiver OK em seu código, não haverá redesenhos desnecessários.

Eu tenho esse nível de interface gráfica, são usados 10 objetos CCanvas (herdeiros):


Obrigado. Meu problema não é com o redimensionamento. É um bug em meus métodos.