Discussão do artigo "Interfaces gráficas X: Atualizações para a Biblioteca Easy And Fast (Build 2)"

 

Novo artigo Interfaces gráficas X: Atualizações para a Biblioteca Easy And Fast (Build 2) foi publicado:

Desde a publicação do artigo anterior da série, a biblioteca Easy And Fast tem recebido algumas funcionalidades novas. A estrutura e o código da biblioteca foram parcialmente otimizados, reduzindo ligeiramente a carga da CPU. Alguns métodos recorrentes em muitas classes de controle foram transferidos para a classe base CElement.

Como já foi mencionado, nós criamos uma outra aplicação (Expert) contendo a mesma interface gráfica:

 Fig. 13. Teste da aplicação do tipo Expert

Fig. 13. Teste da aplicação do tipo Expert

Autor: Anatoli Kazharski

 

Obrigado ao autor pelo trabalho de qualidade.

 

Aguardando o vídeo.

E mais realização do dinamismo da janela. Se possível).

Em minha opinião, essa seria uma conclusão lógica de todo o trabalho e tornaria a interface escrita com a ajuda da biblioteca fornecida completamente completa.

(Essa proposta é uma expressão do desejo de um "usuário interessado". Nada mais).

 

Existem 3 botões de opção na guia Tab 1. O que e onde devo adicionar nesse exemplo para que, ao alterná-los, apareça um alerta com o nome do botão pressionado?

p.s. Nesse exemplo, no arquivo MainWindow.mqh, na função bool CProgram::CreateTable , há duas definições: COLUMNS2_TOTAL e ROWS2_TOTAL e, em seguida, na mesma função, são usadas as definições COLUMNS1_TOTAL e ROWS1_TOTAL. Isso provavelmente é um erro.

 
Alexey Oreshkin:

Há 3 botões de opção na guia Tab 1. O que e onde devo adicionar neste exemplo para que, ao alterná-los, apareça um alerta com o nome do botão pressionado?

No manipulador de eventos da classe personalizada CProgram::OnEvent(), adicione este bloco de código:

//+------------------------------------------------------------------+
//| Manipulador de eventos gráficos|
//+------------------------------------------------------------------+
void CProgram::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
//...
//--- Evento de clique no rótulo de texto
   if(id==CHARTEVENT_CUSTOM+ON_CLICK_LABEL)
     {
      //--- Se você pressionou o botão de rádio
      if(lparam==m_radio_buttons1.Id())
        {
         ::Alert("element id (lparam): ",lparam,"; radio button index (dparam): ",(int)dparam,"; radio button description (sparam): ",sparam);
         return;
        }
      //---
      return;
     }
//...
  }

//---

Resultado:


//---

p.s. Nesse exemplo, no arquivo MainWindow.mqh, na função bool CProgram::CreateTable , há duas definições: COLUMNS2_TOTAL e ROWS2_TOTAL e, em seguida, na mesma função, são usadas as definições COLUMNS1_TOTAL e ROWS1_TOTAL. Isso provavelmente é um erro.

Sim. Eu estava transferindo o código de outro arquivo e esqueci de corrigi-lo.

 
Реter Konow:

Aguardando o vídeo.

E mais realização do dinamismo da janela. Se possível).

Em minha opinião, essa seria uma conclusão lógica de todo o trabalho e tornaria a interface escrita com a ajuda da biblioteca fornecida completamente completa.

(Essa proposta é uma expressão do desejo de um "usuário interessado". Nada mais).

Há muito mais a ser feito antes que ela esteja totalmente funcional e seja a conclusão lógica de todo o trabalho, além do dinamismo da janela. Haverá pelo menos mais nove controles. E também precisamos fazer alguns aprimoramentos que simplificarão a criação da interface, pois alguns usuários têm dificuldades. E não faria mal nenhum criar uma documentação de ajuda também. Para ser mais preciso, isso é até necessário, mas farei isso somente depois que o desenvolvimento estiver totalmente concluído. Isso ainda está muito longe.

 
Anatoli Kazharski:

Antes de completar completamente o estado e a conclusão lógica de todo o trabalho, há muito mais a ser feito além do dinamismo das janelas. Haverá pelo menos mais nove controles. E também precisamos fazer alguns aprimoramentos que simplificarão a criação da interface, pois alguns usuários tiveram dificuldades. E não faria mal nenhum criar uma documentação de ajuda também. Para ser mais preciso, isso é até necessário, mas farei isso somente depois que o desenvolvimento estiver totalmente concluído. Isso é só daqui a algum tempo.

Entendo.

O dinamismo da janela não é o principal. Mas é conveniente.

Muito interessante, quais outros controles você vai adicionar.

Você fará um vídeo com a demonstração dos recursos da interface?

Ou, por exemplo, você poderia filmar o processo de criação de uma interface para um pequeno especialista trabalhando no MA.

Eu realmente gostaria de ver o resultado final em ação.

Eu mesmo verificaria tudo, mas, francamente, não tenho tempo, pois estou muito ocupado com meu trabalho.

Além disso, esse vídeo poderia atrair muita atenção dos usuários.

 
Реter Konow:

Estou entendendo.

O dinamismo da janela não é o principal. Mas é conveniente.

Muito interessante, que outros controles você vai adicionar.

Você fará um vídeo com a demonstração dos recursos da interface?

Ou, por exemplo, você poderia filmar o processo de criação de uma interface para um pequeno especialista trabalhando no MA.

Eu realmente gostaria de ver o resultado final em ação.

Eu mesmo verificaria tudo, mas, francamente, não tenho tempo, pois estou muito ocupado com meu trabalho.

Além disso, esse vídeo poderia atrair muita atenção dos usuários.

Tudo isso e muito mais também já foi planejado. Haverá muitos exemplos de trabalho que ajudarão os desenvolvedores de MQL a usar essa biblioteca em seus projetos. Infelizmente, não posso dedicar muito tempo a cada um deles individualmente. Mas posso encontrar tempo para os artigos.

Os elementos serão, por exemplo:

  • Elemento "Time" (Tempo).
  • Elemento "Campo de texto" com transferência automática de palavras + barra de rolagem.
  • Listas de botões de rádio e caixas de seleção com uma barra de rolagem vertical.
  • E muito mais.

 
Anatoli Kazharski:

No manipulador de eventos da classe personalizada CProgram::OnEvent(), adicione este bloco de código:

Obrigado. Foi isso que fiz, mas não coloquei :: antes de Alert , por isso não funcionou.
 
Alexey Oreshkin:
Muito obrigado. Foi o que eu fiz, mas não coloquei :: na frente de Alert , então não funcionou.
A ausência de :: não deveria ter tido nenhum efeito. O erro foi outra coisa.
 
Anatoli Kazharski:
A ausência de :: não deveria ter tido nenhum efeito. O erro foi outra coisa.

Talvez eu tenha excluído meu código e agora não sei dizer com certeza.

O erro ocorre quando fecho a janela criada pelo indicador com uma cruz. Alterei ligeiramente o arquivo MainWindow.mqh do exemplo localizado aqui: Indicators\Article 10\SeparateWindow.

E não entendo como excluir uma linha da tabela criada?