Discussão do artigo "Como criar um painel gráfico de qualquer nível de complexidade" - página 9

 
Vasiliy Pushkaryov:
Ainda não me deparei com isso. Não sei. Stanislav responde a uma das perguntas na postagem 27 deste tópico. A desativação da biblioteca padrão também é abordada lá, dê uma olhada.

aplicou o método Visible()

respira como eu preciso

e outro agradecimento ao MQ pelo MQL, é claro.

Bem, tudo pode ser realizado, qualquer fantasia ;)
 

Olá, vocês dois,

Não tenho palavras para agradecer a vocês. Muitas vezes me deparei com códigos de programas absolutamente ruins aqui e, graças às suas críticas, economizei muito tempo procurando o significado desse tipo de programação.
Existe uma descrição razoável da sintaxe MQL completa traduzida para o alemão em algum lugar?

Die Ersetzung des CWndContainer
Die Ersetzung des CWndContainer
  • www.mql5.com
Diese Datei ersetzt die originale Datei WndContainer.mqh. Er verhindert die Veränderung des Charts beim Druck und bei der Haltung der Maus-Taste innerhalb im Bereichs des Containers.
 
Joosy:

Olá, vocês dois,

Não tenho palavras para agradecer a vocês. Muitas vezes me deparei com códigos de programas absolutamente ruins aqui e, graças às suas críticas, economizei muito tempo procurando o significado desse tipo de programação.
Existe uma descrição razoável da sintaxe MQL completa traduzida para o alemão em algum lugar?

  1. https://www.mql5.com/files/pdf/mql5_german.pdf
  2. https://www.mql5.com/pt/docs/function_indices
    Essa é uma lista na qual você pode pesquisar palavras-chave com Ctrl+F de acordo com o lema, qual era o nome novamente...
  3. No editor, é possível colocar o mouse sobre uma função MQL5 e pressionar F1 para ir diretamente à documentação dessa função, algumas com exemplos...
 
Carl Schreiber:
  1. https://www.mql5.com/files/pdf/mql5_german.pdf
  2. https://www.mql5.com/pt/docs/function_indices
    Essa é uma lista na qual você pode pesquisar palavras-chave com Ctrl+F de acordo com o lema, qual era o nome de novo...
  3. No editor, você pode colocar o mouse sobre uma função MQL5 e pressionar F1 para ir diretamente à documentação dessa função, algumas com exemplos...
Basicamente, eu conheço a documentação. No entanto, estou mais uma vez inspirado pelos links que você forneceu para a exibição da visão geral. Desse ponto de vista, é uma abordagem diferente.
Obrigado!
 
Joosy:
Basicamente, eu conheço a documentação. No entanto, fui inspirado mais uma vez pelos links que você forneceu para a exibição da visão geral. Desse ponto de vista, é uma abordagem diferente.
Obrigado!

Também experimentei os painéis, mas não funcionou para mim porque sempre está na janela do gráfico.

Agora, coloquei tudo em uma janela de indicador, que sempre fica na parte inferior do gráfico

 

Sim, para criar um painel, você precisa entender dezenas de linhas de código e, em seguida, criar dezenas e mais.... Esperava-se que a funcionalidade já estivesse implementada, que fosse selecionada ou ativada (Enable), mas - não!!!!

com todo o respeito, mas não vi do simples ao complexo. vou desenhar quadrados e envolvê-los em meus wrappers.

PS: é melhor postar os arquivos dos artigos separadamente - disponíveis para visualização no navegador.

[Excluído]  

Olá, Vladimir,


Muito obrigado pelo artigo, ele é muito útil. Eu só queria saber sobre algumas partes da alteração da cor dos objetos m_client_area e m_background:

   int total=AppWindow.ControlsTotal();
   CWndClient*myclient;
   for(int i=0;i<total;i++)
     {
      CWnd*obj=AppWindow.Control(i);
      string name=obj.Name();
      PrintFormat("%d is %s",i,name);
      //--- cor 
      if(StringFind(name,"Client")>0)
        {
         CWndClient *client=(CWndClient*)obj;
         client.ColorBackground(clrRed);
         myclient=client;
         Print("client.ColorBackground(clrRed);");
         ChartRedraw();
        }
      //---
      if(StringFind(name,"Back")>0)
        {
         CPanel *panel=(CPanel*) obj;
         panel.ColorBackground(clrGreen);
         Print("panel.ColorBackground(clrGreen);");
         ChartRedraw();
        }
     }

As partes destacadas são os itens sobre os quais eu não tinha certeza. Em resumo, eu entendo o que todo o código faz, mas não tenho certeza de como ele o faz. Eu não tinha certeza sobre os dois códigos abaixo:


1. ele está acessando um arquivo de controle como WndClient.mqh e para que serve o *.

CWndClient *client=(CWndClient*)obj;

2. Minha outra pergunta era o que são obj e Name(); conforme mostrado abaixo. Entendo que obj é provavelmente um objeto e a parte name é para o nome do objeto. No entanto, se eu colocar obj.Name(); em qualquer outro código, ele não o entenderá, portanto, sei que é exclusivo de algo acima. Só não tinha certeza de como ele se encaixa.

obj.Name();


Agradeço se você tiver tempo para responder e agradeço antecipadamente.

 
ctrading :

***

2. Minha outra pergunta era o que são obj e Name(); conforme mostrado abaixo. Entendo que obj é provavelmente um objeto e a parte name é para o nome do objeto. No entanto, se eu colocar obj.Name(); em qualquer outro código, ele não o entenderá, portanto, sei que é exclusivo de algo acima. Só não tinha certeza de como ele se encaixa.

obj.Name();

***

A variável obj vive somente durante uma iteração do loop for .

 

Muito obrigado por seu artigo!

Sou um programador iniciante e estou tentando criar um painel muito mais complexo.

Há alguns dias, tenho dificuldade para criar CLabel e CButton no cabeçalho da classe.

Como usarei muitos rótulos com o mesmo texto, como um "traço", por exemplo

Estou tentando encontrar algum tipo de looping ou uma matriz para criar vários rótulos no cabeçalho da classe (privado):

class CTradePanel : public CAppDialog
  {
private:
   
   CLabel            dashs[100];   /Criar muitos traços no painel
  }


Como posso preencher uma matriz com "rótulos"?

Minha ideia é que, depois disso, eu chame algum tipo de função abaixo:

for(int i=0 ; i<100 ; i++)
      {
       string dash_name = "dash_"+IntegerToString(i);
       if(!CreateLabel(chart,subwin,dash_name,"-",5*i,5*i))
         {
          return false;
         }
      }

Mas ela retorna o erro: "'dash_name' - parameter conversion not allowed"

Então, como posso preencher uma matriz com "CLabel" e depois usar esses "rótulos" em uma função de looping?

Alguém poderia me ajudar?

 
Guilherme Mendonca :

Muito obrigado por seu artigo!

Sou um programador iniciante e estou tentando criar um painel muito mais complexo.

Há alguns dias, tenho dificuldade para criar CLabel e CButton no cabeçalho da classe.

Como usarei muitos rótulos com o mesmo texto, como um "traço", por exemplo

Estou tentando encontrar algum tipo de looping ou uma matriz para criar vários rótulos no cabeçalho da classe (privado):


Como posso preencher uma matriz com "rótulos"?

Minha ideia é que, depois disso, eu chame algum tipo de função abaixo:

Mas ela retorna o erro: "'dash_name' - parameter conversion not allowed"

Então, como posso preencher uma matriz com "CLabel" e depois usar esses "rótulos" em uma função de looping?

Alguém poderia me ajudar?

Você precisa conectar a classe CArrayObj. E agir de acordo com o exemplo da ajuda.

Documentation on MQL5: Standard Library / Data Collections / CArrayObj
Documentation on MQL5: Standard Library / Data Collections / CArrayObj
  • www.mql5.com
CArrayObj - Data Collections - Standard Library - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5