Aulas para a criação de painéis e diálogos - página 3

 
Slawa:

Quais são os sintomas?

Dimitri precisa da GUI do indicador, que está em uma subjanela (indicador_separate_window), a ser criada na janela do gráfico principal.
 
Dmitry Fedoseev:
Então

De qualquer forma, eu também tenho um pequeno problema. ) Este modo, ou seja,"indicador em uma subjanela e sua GUI na janela do gráfico principal", não havia sido testado em minha biblioteca antes e agora há um pequeno bug que impossibilitou a exclusão do indicador pressionando o botão fechar e também há um conflito na determinação do número da subjanela após a colocação/eliminação de outros indicadores nas subjanelas, o que levou ao tratamento incorreto de eventos em alguns casos.

Vou refinar a biblioteca para esta modalidade, mas um pouco mais tarde e esta estará disponível em uma versão futura. Isto levará algum tempo, pois precisamos testar cuidadosamente tudo em diferentes situações.

Como alternativa posso sugerir o seguinte, a partir do que já foi testado e funciona. Você pode colocar a barra indicadora na sub janela indicadora de várias maneiras. Há vários modos nos quais você pode minimizar o painel (1) junto com a sub janela indicadora, ou (2) somente o painel sem tocar na sub janela indicadora, como mostrado nas imagens abaixo. A subjanela pode ser (1) de altura fixa ou (2) livre para ser redimensionada manualmente. Mas mesmo neste caso, há uma limitação. Só pode haver uma aplicação MQL com interface gráfica no gráfico. Caso contrário, haverá conflitos.

//---

Se as opções sugeridas forem adequadas, prepararei os modelos. Se não, então, infelizmente, não posso ajudá-los com isso.

Os arquivos para testes estão no arquivo:

Arquivos anexados:
Test.zip  8 kb
 
Slawa:

Nada é complicado. Quais são os sintomas?

Acabei de experimentar. Primeiro o indicador na subjanela. Em seguida, o painel na tabela. Em seguida, um painel semelhante na subjanela. A única coisa que eu vi foi o SimplePanel2 na primeira subjanela. Mas isso não afeta a operação. Todos os botões pressionados corretamente.

A única coisa que distingue o SimplePanel2 do SimplePanel é a propriedade do indicador_chart_window

A refilmagem experimental do SimplePanel para janela gráfica também funciona bem. Ambos trabalham, na subjanela e no gráfico e quando a subjanela é um indicador normal. Mas quando tanto o SimplePanel (na tabela de preços e em uma subjanela), então quando eu corro um indicador padrão em uma subjanela, o painel que está na tabela de preços falha - a janela é minimizada, quando eu tento expandi-la, ela se desdobra por um momento e depois minimiza novamente.

A mina apresenta falhas ao adicionar um indicador padrão à subjanela. Aqui está o código do arquivo incluído:

#include <Controls\Dialog.mqh>
#include <Controls\Edit.mqh>
#include <Controls\ComboBox.mqh>
#include <Controls\Label.mqh>

#define INDENT 11
#define LINE   20

class CPanTest:public CAppDialog{
   protected:
      CComboBox         m_cmb_main;
      CEdit             m_edit1;
      void OnMainEvent(){
      }    
      void OnControlEvent(){
      }        
   public:
      bool Create(){
         if(!CAppDialog::Create(0,"name",0,20,20,200,300)){
            return(false);  
         }
         return(true);    
      }  
      bool OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
};

EVENT_MAP_BEGIN(CPanTest)
   ON_EVENT(ON_CHANGE,m_cmb_main,OnMainEvent)
   ON_EVENT(ON_END_EDIT,m_edit1,OnControlEvent)
EVENT_MAP_END(CAppDialog)

Indicador:

#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots   0

#include <CPanTest.mqh>

CPanTest * pan;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(){
   pan=new CPanTest();
   if(!pan.Create()){  
      return(INIT_FAILED);
   }
   if(!pan.Run()){
     return(INIT_FAILED);  
   }  
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason){
   pan.Destroy();
   delete(pan);
}  

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   return(rates_total);
}

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   pan.ChartEvent(id,lparam,dparam,sparam);
}
 
Anatoli Kazharski:

De qualquer forma, eu também tenho um pequeno problema. ) Este modo, ou seja,"indicador em uma subjanela e sua GUI na janela do gráfico principal", não havia sido testado em minha biblioteca antes e agora há um pequeno bug que impossibilitou a exclusão do indicador pressionando o botão fechar e também há um conflito na determinação do número da subjanela após a colocação/eliminação de outros indicadores nas subjanelas, o que levou ao tratamento incorreto de eventos em alguns casos.

Vou refinar a biblioteca para esta modalidade, mas um pouco mais tarde e esta estará disponível em uma versão futura. Isto levará algum tempo, pois precisamos testar cuidadosamente tudo em diferentes situações.

Como alternativa posso sugerir o seguinte, a partir do que já foi testado e funciona. Você pode colocar a barra indicadora na sub janela indicadora de várias maneiras. Há vários modos nos quais você pode minimizar o painel (1) junto com a sub janela indicadora, ou (2) somente o painel sem tocar na sub janela indicadora, como mostrado nas imagens abaixo. A subjanela pode ser (1) de altura fixa ou (2) livre para ser redimensionada manualmente. Mas mesmo neste caso, há uma limitação. Só pode haver uma aplicação MQL com interface gráfica no gráfico. Caso contrário, haverá conflitos.

//---

Se as opções sugeridas forem adequadas, prepararei os modelos. Se não, então, infelizmente, não posso ajudá-los com isso.

Os arquivos para testes estão no arquivo:

Que esteja no podoc. Deve ser pendurado livremente na sub janela, colapsar independentemente da sub janela, e a sub janela pode ser escalonada.
 
Dmitry Fedoseev:
Que esteja em subjanela. A subjanela deve ficar pendurada livremente na subjanela, cair independentemente da subjanela, e a subjanela deve ser escalável.

Há um arquivo modelo no arquivo. Se você tiver alguma pergunta, eu a responderei.

Arquivos anexados:
Test.zip  4 kb
 
Anatoli Kazharski:

Há um arquivo modelo no arquivo. Se você tiver alguma pergunta, eu responderei.

Tem havido uma confusão:

 
Dmitry Fedoseev:

Tem havido uma confusão:

Oh, eu já tenho as mudanças em andamento para a próxima versão. Estou apenas tornando tudo coerente. )

Corrigido para a versão do último artigo. Mais uma tentativa.

Arquivos anexados:
Test.zip  4 kb
 
Anatoli Kazharski:

Oh, eu já tenho as mudanças em andamento para a próxima versão. Trazendo tudo de volta ao mesmo. )

Corrigido para a versão do último artigo. Mais uma tentativa.

Eh... mais alguns... Agora, muitos erros sobre os recursos em falta.
 
Dmitry Fedoseev:
Eh... mais alguns... Agora há muitos erros sobre os recursos em falta.
Todos os recursos utilizados na biblioteca estão anexados ao último artigo da série. Quais são as mensagens de registro?
 
Anatoli Kazharski:
Todos os recursos utilizados na biblioteca estão anexados ao último artigo da série. Quais são as mensagens no diário de bordo?
Mensagens sobre recursos em falta.