Discussão do artigo "Guia prático do MQL5: Controles da sub-janela indicadora - barra de rolagem"

 

Novo artigo Guia prático do MQL5: Controles da sub-janela indicadora - barra de rolagem foi publicado:

Vamos continuar a explorar vários controles e desta vez a nossa atenção é para a barra de rolagem. Assim como no artigo anterior intitulado"Guia prático do MQL5: Os controles da sub-janela indicadora - botões", todas as operações serão realizadas na sub-janela indicadora. Tome um tempo para ler o artigo acima mencionado, uma vez que ele fornece uma descrição detalhada do trabalho com eventos na função OnChartEvent(), enquanto este ponto somente será casualmente abordado neste artigo. Para fins ilustrativos, desta vez vamos criar uma barra de rolagem vertical para uma grande lista de todas as propriedades de instrumentos financeiros que possam ser obtidas usando recursos do MQL5.

Nos artigos anteriores sobre a programação MQL5 usamos o objeto gráfico OBJ_LABEL (etiqueta de texto) para criar listas. Neste artigo, vamos usar uma tela para exibir texto. A conveniência de tal abordagem reside no fato de, em vez de um grande número de objetos OBJ_LABEL, usaremos apenas uma - OBJ_BITMAP_LABEL (etiqueta Bitmap). Você pode desenhar qualquer elemento de interface em uma tela, mas desta vez, vamos nos limitar somente ao texto.

A barra de rolagem será muito simples. Ela geralmente tem botões de seta, mas eles não serão características no nosso caso. A caixa de rolagem só será composta pelo fundo e pela caixa de rolagem. A caixa de rolagem mudará a sua cor quando o cursor passar sobre ela. Quando clicada, mudará de cor também, sugerindo ao usuário que a caixa de rolagem está agora selecionada e pode ser arrastada. Ao criar objetos de rolagem, usaremos objetos gráficos do tipo OBJ_RECTANGLE_LABEL (Marcador de retângulo).


Autor: Anatoli Kazharski

 
Recentemente, acompanhei todos os artigos de Anatoli e devo dizer que ele é um ótimo programador. Além disso, ele compartilha seu conhecimento com outras pessoas que são novas na linguagem de programação do MT5, como eu, o que considero uma atitude generosa. Espero que, no futuro, mais artigos sejam publicados por Anatoli.
 

Anatoly, obrigado por seu trabalho e sua dedicação!

Tenho uma pergunta: há algum exemplo de uso da classe CScroll da biblioteca Scrolls.mqh padrão?

 
thejobber:

Anatoly, obrigado por seu trabalho e sua dedicação!

Tenho uma pergunta: há algum exemplo de uso da classe CScroll da biblioteca padrão Scrolls.mqh?

Obrigado.

Eu não uso a biblioteca padrão para desenvolver interfaces com controles.

 
thejobber:

Anatoly, obrigado por seu trabalho e empenho!

Uma pergunta: há algum exemplo de uso da classe CScroll? da biblioteca padrão Scrolls.mqh.

Há um exemplo na entrega padrão


 
Obrigado, ainda estava girando este exemplo.... Não notei isso, fui estúpido em uma palavra))
 
Terei que redesenhar um pouco a lógica de visualização... Eu estava criando rótulos, e o número deles não era conhecido antes. Eu estava pensando em adicionar uma rolagem ao formulário, agora será ainda mais fácil, haverá um objeto CListView.)
 
Posso alterar a cor de um item individual em um CListView?
 

Olá

Olá Anatoli Kazharski

No entanto, o tópico é muito antigo, mas eu gostaria de agradecê-lo pelo excelente e útil trabalho.

Eu precisava da barra de rolagem, mas só conseguia encontrá-la usada nos ListViews, mas aqui consegui extrair as funções da barra de rolagem e usá-las.

Só notei que, no entanto, essa parte logicamente pode sempre funcionar, mas pode não ser o que você pretendia escrever:

//+------------------------------------------------------------------+
//| Alteração da cor da caixa de rolagem quando o cursor passa sobre ela
//+------------------------------------------------------------------+
void ChangeScrollbarThumbColorOnHover(int x,int y)
  {
//--- Se o cursor estiver dentro da área da caixa de rolagem, torne a cor mais escura
   if(x>scrollbar_thumb_x1 && x<scrollbar_thumb_x2 && y>scrollbar_thumb_y1 && y<scrollbar_thumb_x2)

      SetScrollbarThumbColor(scrollbar_thumb_color_on_hover);
//--- Se o cursor estiver fora dos limites da caixa de rolagem
   else
     {
      //--- Se o botão do mouse for liberado, defina a cor padrão da caixa de rolagem
      if(!mouse_button_state)
         SetScrollbarThumbColor(scrollbar_thumb_color);
     }
  }

Mais uma vez, obrigado pelo excelente trabalho.