Discussão do artigo "Interfaces Gráficas IV: Elementos Informativos da Interface (Capítulo 1)"

 

Novo artigo Interfaces Gráficas IV: Elementos Informativos da Interface (Capítulo 1) foi publicado:

No atual estágio de desenvolvimento, a biblioteca para a criação de interfaces gráficas contém um formulário e vários controles que podem ser ligados a ele. Foi mencionado antes que um dos artigos futuros seria dedicado ao modo multi-janela. Agora, nós já temos tudo preparado para considerar tal questão, desse modo, nós vamos lidar com isso no capítulo seguinte. Neste capítulo, nós vamos escrever as classes para criar os elementos de interface barra de status e dica de contexto.

Neste artigo, nós vamos criar uma barra de status simples, sem uma opção de ligar os menus de contexto aos seus itens. Semelhante aos outros elementos de interface, a barra de status será composta de vários objetos primitivos:

  • Fundo.
  • Elementos.
  • Linhas de separação.

Fig. 1. Partes integrantes do elemento barra de status.

Fig. 1. Partes integrantes do elemento barra de status.

Autor: Anatoli Kazharski

 
Anatoly, ótima série de artigos, e relevante. Você poderia: 1. Publicar uma lista de artigos anteriores no início de cada artigo. A pesquisa no site nem sempre funciona corretamente) 2. Fazer alguma soma de conhecimento na forma de um exemplo. Não há necessidade de mastigar isso, acho que quem ler seus artigos entenderá. Mas seria interessante ver o resultado divertido de uma vez. 3. Boa sorte, estou aguardando ansiosamente a continuação)
 
Alexey Volchanskiy:
Anatoly, excelente série de artigos, e relevante. Você poderia, por favor: 1. Publicar uma lista de artigos anteriores no início de cada artigo. A pesquisa no site nem sempre funciona corretamente) 2. Fazer alguma soma de conhecimento na forma de um exemplo. Não há necessidade de mastigar isso, acho que quem ler seus artigos entenderá. Mas seria interessante ver o resultado divertido de uma vez. 3. Boa sorte, estou ansioso para continuar)

Obrigado.

Você pode escrever um artigo separado mais tarde, no qual, como exemplo, criará um aplicativo com uma interface gráfica com todos os controles da biblioteca. E já neste artigo, disponibilize o conteúdo completo com links para todos os artigos. Essa opção será conveniente para aqueles que desejam apenas usar a biblioteca em seus aplicativos MQL sem se aprofundar em como ela está organizada.

 
Anatoli Kazharski:

Obrigado.

Você pode escrever um artigo separado no qual crie um aplicativo GUI com todos os controles da biblioteca como exemplo. E já neste artigo, crie um conteúdo completo com links para todos os artigos.

+1
 
Rashid Umarov:
Negócio. )
 
MetaQuotes Software Corp.:

Foi publicado o novo artigo Graphical Interfaces IV: Informational Interface Elements (Capítulo 1):

Autor: Anatoli Kazharski

Muito bom! Obrigado, Anatoli.
 

Olá~ Carreguei o modelo que você forneceu para teste, mas recebo um erro

Descrição: 'return'-cannot convert from const pointer to nonconst pointer

Arquivo:SplitButton.mqh

O que posso fazer para corrigir isso?

 

Tol, não dei uma olhada nas duas últimas versões, mas antes delas há um bug no CCtatusBar:

Se a barra de status m_status_bar.ValueToItem() estiver sendo atualizada no cronômetro, se a janela principal for minimizada, a barra de status ficará pendurada no gráfico o tempo todo - ela não será minimizada. Tenho que monitorar constantemente meu programa CP dessa forma:

if(m_status_bar.IsDropdown()) { m_status_bar.ValueToItem(....); }

Para corrigir isso, você precisa adicionar essa verificação em CCtatusBar no método ValueToItem():

//+------------------------------------------------------------------+
//| Define o valor no índice especificado.
//+------------------------------------------------------------------+
void CStatusBar::ValueToItem(const uint index,const string value)
  {
//--- Verificar se está fora do intervalo
   uint array_size=::ArraySize(m_items);
   if(array_size<1 || m_wnd.IsMinimized())
      return;
//--- Ajustar o valor do índice se estiver fora da faixa
   uint correct_index=(index>=array_size)? array_size-1 : index;
//--- Configuração do texto transmitido
   m_items[correct_index].Description(value);
  }
//+------------------------------------------------------------------+

Assim, tudo ficará bem e você não precisará se lembrar constantemente disso e controlá-lo em seu programa.

 
Artyom Trishkin:

...

Se a barra de status m_status_bar.ValueToItem() estiver sendo atualizada no cronômetro, se a janela principal for minimizada, a barra de status ficará pendurada no gráfico o tempo todo - ela não será minimizada.

...

Verificado. Quase todos os exemplos de teste dos artigos têm uma barra de status com uma atualização no cronômetro. O comportamento descrito não é reproduzido.
 
Anatoli Kazharski:
Verificar. Quase todos os exemplos de teste dos artigos têm uma linha de status com uma atualização no cronômetro. O comportamento descrito não é reproduzido.

Sabe, eu queria gravar um vídeo de como isso funciona, mas, infelizmente, depois de retornar à sua versão de ValueToItem(), também perdi esse comportamento. Mas ele estava lá... Talvez porque o mercado esteja fechado agora....

Vou deixar do jeito que sugeri - para que eu não me depare com esse bug novamente em algum lugar, em algum momento.

 

Estou testando no 4.
O comportamento é padrão.
Aproveito a oportunidade para perguntar:
como os ícones podem ser usados na barra de status?

Como um indicador de conexão ou algo assim...
)