Aulas para a criação de painéis e diálogos

 

Estas são as classes. Há, é claro, muitas perguntas, até mesmo muitas demais. Mas uma é a principal no momento.

Não há como criar um painel na tabela de preços a partir do indicador na subjanela?

 
Dmitry Fedoseev:

Estas são as classes. Há, é claro, muitas perguntas, até mesmo muitas demais. Mas uma é a principal no momento.

Não há como criar um painel em uma tabela de preços a partir de um indicador em uma subjanela?

Não é (MQL5\\\\\i1\i1\i1\i1\i1\i1\i1\i1\i1\i1\i1\i1\i1)?

EURUSDM1

 
Vladimir Karputov:

Isto não é (MQL5\i1\i1\i1\i1\i1\i1\i1\i1\i1\i1\i1\i1\i1)?

Não é. O próprio indicador é desenhado na subjanela, enquanto o painel precisa ser criado na tabela de preços. Não há reação ao parâmetro subwin. A julgar pelo código em Dialog.mqh, não deve ser assim:

bool CAppDialog::CreateIndicator(const int x1,const int y1,const int x2,const int y2)
  {
   int width=m_chart.WidthInPixels();
//--- geometry for the minimized state
   m_min_rect.LeftTop(0,0);
   m_min_rect.Width(width);
   m_min_rect.Height(CONTROLS_DIALOG_MINIMIZE_HEIGHT-2*CONTROLS_BORDER_WIDTH);
//--- determine subwindow
   m_subwin=ChartWindowFind();

Já encontrei uma saída para esta situação, muito complicada (e muito incomum, estará no artigo). Mas ainda assim a maneira de pensar do criador dessas classes é muito interessante.

 
Dmitry Fedoseev:

Errado. O próprio indicador desenha na subjanela, mas o painel precisa ser criado na tabela de preços. Não há reação ao parâmetro subwin. A julgar pelo código em Dialog.mqh, não deve ser:

bool CAppDialog::CreateIndicator(const int x1,const int y1,const int x2,const int y2)
  {
   int width=m_chart.WidthInPixels();
//--- geometry for the minimized state
   m_min_rect.LeftTop(0,0);
   m_min_rect.Width(width);
   m_min_rect.Height(CONTROLS_DIALOG_MINIMIZE_HEIGHT-2*CONTROLS_BORDER_WIDTH);
//--- determine subwindow
   m_subwin=ChartWindowFind();

Já encontrei uma saída para esta situação, muito complicada (e muito incomum, estará no artigo). Mas ainda assim a forma de pensar do criador dessas classes é muito interessante.

Eu não o fiz - se o indicador cria um painel baseado em classes para criar diálogos e painéis, ele o faz em sua própria janela. Provavelmente existe também um link para receber eventos.
 

Outra falha foi descoberta. Eu crio um painel a partir do indicador na tabela de preços, e se houver um indicador na subjanela da tabela, o painel apresenta uma falha.

Um presente do inferno, não classes para a criação de painéis e diálogos.

 

Como deve ser a GUI ? Que controles você planeja usar? Eu posso ajudar a fazer uma GUI para todos os artigos onde você precisar, usando minha versão.

Aqui está a última versão (build 4) da biblioteca:Interfaces Gráficas X: Elemento Gráfico Padrão (build 4)

Se estiver interessado, continuaremos em particular.

 
Anatoli Kazharski:

Como deve ser a GUI ? Que controles você planeja usar? Eu posso ajudar a fazer uma GUI para todos os artigos onde você precisar, usando minha versão.

Aqui está a última versão (build 4) da biblioteca:Interfaces Gráficas X: Elemento Gráfico Padrão (build 4)

Se estiver interessado, continuaremos em particular.

Eu não sei o que deveria ser. Apenas olhando aqui para o número de tópicos com GUI, pensei que talvez a Roche tivesse decidido popularizar as classes padrão para a criação de painéis e diálogos. Elas não devem ser popularizadas, devem ser esquecidas para sempre.

Se não houver requisitos especiais para artigos sobre criação de GUI (espero que a Roche responda a eles em algum momento), eu mesmo posso criar algo. Eu também posso ler seus artigos. Mas eu não estou acostumado a culpar outra pessoa por meus problemas.

 
Dmitry Fedoseev:

...

Eu mesmo posso ler seus artigos. É que eu não tenho o hábito de culpar outra pessoa pelos meus problemas.

Não é complicado. Quero dizer, não levaria muito do meu tempo. Além disso, é interessante para mim.

Apenas um minuto e o modelo de indicador sobre o assunto nesta linha está pronto:

//---

O arquivo com os arquivos está no trailer.

Arquivos anexados:
Test.zip  3 kb
 
Anatoli Kazharski:

Lá não é difícil. Isto é, não levaria muito tempo.

Literalmente um minuto e o modelo indicador para a pergunta nesta linha está pronto:

//---

Um arquivo com arquivos no trailer.

Anatoly, você e a MQ ainda não discutiram a possibilidade de acrescentar suas aulas à biblioteca padrão? Você fez um trabalho tão bom + artigos, tudo é lindo, enquanto a biblioteca padrão não brilha com isso.

Ou você o faria como alternativa...

 
Alexey Kozitsyn:

Anatoly, você e a MQ ainda não falaram em acrescentar suas aulas à biblioteca padrão? Você fez tanto trabalho + artigos - tudo é bonito, e a biblioteca padrão não brilha com isso.

Ou você o faria como alternativa...

Você já tem uma como alternativa. Mas incluí-la na biblioteca padrão tem muito a fazer. Eu não gostaria de colocar para fora um produto meio cozido. No estágio atual de implementação não concordo, mesmo que todos digam que sim.
 
Anatoli Kazharski:

Lá não é difícil. Isto é, não me ocuparia muito do meu tempo. Além disso, é interessante para mim.

Literalmente um minuto e o modelo indicador para a pergunta nesta linha está pronto:

//---

O arquivo com os arquivos está no trailer.

Está bem, vou perguntar por aí. Mas dentro de alguns dias. Necessidade de descansar por um tempo, superaquecido. Sim, e eu gostaria de obter uma resposta da Roche sobre as exigências da GUI.

Embora, se você não se importar, mostre-me um modelo com uma janela, como na figura acima, com dois campos de entrada com giros, duas listas suspensas e um botão. Naturalmente, os eventos devem ser tratados, e um exemplo de código sobre como redimensionar a janela também seria bom.

O ponto principal da minha tarefa é que preciso mudar um conjunto de controles no formulário na mosca.