Discussão do artigo "EA com interface gráfica: Criação do painel (Parte I)"

 

Novo artigo EA com interface gráfica: Criação do painel (Parte I) foi publicado:

Apesar de muitos traders ainda preferirem negociar manualmente, há poucas hipóteses de fazer o trabalho sem automatizar as operações de rotina. O artigo mostra um exemplo em que é criado um EA multissímbolo de sinal para negociação manual.

Autor: Anatoli Kazharski

 

Olá. Como corrigir o erro de compilação?

'ON_END_CREATE_GUI' - identificador não declarado Programme.mqh 307 29


 
kogriv:

Olá. Como posso corrigir o erro de compilação?

'ON_END_CREATE_GUI' - identificador não declarado Programme.mqh 307 29

Atualizar biblioteca:

EasyAndFastGUI - biblioteca para criação de interfaces gráficas


E arquivos de biblioteca anexados ao artigo.

Nome do arquivoComentário
MQL5\Include\EasyAndFastGUI\Controls\Table.mqhClasse CTable atualizada
MQL5\Include\EasyAndFastGUI\Keys.mqhClasse CKeys atualizada
 

Por que esses erros?

Como posso corrigi-lo?

Agradecimentos

 

Oi Anatoli,

Antes de mais nada, parabéns pelo excelente trabalho.

Tentei compilar seus arquivos, mas talvez esteja faltando uma constante, em particular esta: "ON_END_CREATE_GUI" em Program.h.

Talvez deva ser adicionada ao arquivo defines.h?


Desde já, obrigado

Manuele

 
Manuele Lissoni:

Oi Anatoli,

Antes de mais nada, parabéns pelo excelente trabalho.

Tentei compilar seus arquivos, mas talvez esteja faltando uma constante, em particular esta: "ON_END_CREATE_GUI" em Program.h.

Talvez deva ser adicionada no arquivo defines.h?


Desde já, obrigado

Manuele

Adicione esta linha no arquivo Defines.mqh:
#define  ON_END_CREATE_GUI           (42)

Funcionou para mim.

 

Fiz o download dos anexos e não foi possível resolver as seguintes inclusões

#include <EasyAndFastGUI\WndEvents.mqh>

#include <EasyAndFastGUI\TimeCounter.mqh>


Verifiquei que eles não foram baixados com os anexos

 

Anatoly, por favor, me oriente sobre esse ponto.

Um gráfico padrão foi adicionado à Fig.11. A pergunta é a seguinte. Ele tem um ID exclusivo? Ou eu não o procurei bem ou ele está escondido em algum lugar distante. Minha tarefa é desenhar minha própria tela pequena nesse gráfico adicionado. Obrigado pelo excelente trabalho com a biblioteca de gráficos.

 

Estou tentando assimilar esse enorme e multifacetado complexo de GUI, pelo qual o autor é muito grato, mas surgem algumas dúvidas.

Por que chamar AddToElementsArray várias vezes ao criar um elemento? Se, por exemplo, uma guia faz parte de uma janela, a chamada m_tabs1.AddToElementsArray(0,m_date_scale) não deveria chamar automaticamente CWndContainer::AddToElementsArray a partir do pai (até onde entendo a terminologia, os pais são chamados de elementos principais, e todos os elementos devem tê-los, e todos eles devem estar dentro de CWndContainer, ou seja, todas as conexões para a chamada automática estão lá)?

Em princípio, ter chamadas para dois "contadores" em métodos com significado (child.MainPointer(parent) e AddToElementsArray(child)) ao criar elementos parece não ser o ideal. Por que não transformar a relação pai-subordinado na direção oposta e combiná-la em uma única chamada a la parent.Add(child), que fará internamente AddToElementsArray e child.MainPointer(parent), se necessário?

Por que deveríamos fazer AddToElementsArray para as guias antes da criação do objeto, mas para o CWndContainer depois?

Por que não tornar possível definir todas as opções antes de criar um elemento? Acontece que as propriedades são artificialmente divididas em duas partes: aquelas que precisam ser definidas antes de chamar Create e aquelas que precisam ser chamadas depois. E o que impede que o estado do sinalizador e do texto seja definido no mesmo grupo de operadores em que o tamanho, as opções etc. são especificados?

Por que CWndContainer::AddToElementsArray com o primeiro parâmetro 0, se na grande maioria dos casos uma janela é usada e o índice pode ser definido como o segundo parâmetro opcional?

Não havia uma ideia de unificar a criação de diferentes tipos de elementos com um único método virtual Create? Agora, cada tipo de elemento tem sua própria função CreateBlaBlaBlaBla - por que isso acontece?

Por que, nos métodos auxiliares (como CreateComboBoxTF etc.), somente a posição do elemento é definida por meio de parâmetros, e seu tamanho é especificado em seu interior? Levando em conta o alinhamento, o tamanho e a posição devem mudar "sincronicamente", em um único local do programa, ou seja, se as coordenadas forem consideradas dignas de serem passadas de fora como parâmetros, o tamanho também deverá estar lá.

No artigo https://www.mql5.com/pt/articles/3366, havia um exemplo de um Expert Advisor com todos os controles, mas ele é incompatível com a versão mais recente. Existe um exemplo atualizado?

 

no código vs, win 10 64bit, ao tentar compilar o painel, recebo avisos "depreciados" e um erro:


Compiling........: TradePanel.mq5

C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Include\EasyAndFastGUI\Element.mqh(379,24) : warning 91: deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Include\EasyAndFastGUI\Controls\Scrolls.mqh(625,15) : warning 91: deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Include\EasyAndFastGUI\Controls\Scrolls.mqh(927,15) : warning 91: deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Include\EasyAndFastGUI\Controls\TextBox.mqh(1844,14) : warning 91: deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Include\EasyAndFastGUI\Controls\ListView.mqh(704,45) : warning 91: deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Include\EasyAndFastGUI\Controls\ListView.mqh(1468,71) : warning 91: deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Include\EasyAndFastGUI\Controls\TreeItem.mqh(85,15) : warning 91: deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Include\EasyAndFastGUI\Controls\ProgressBar.mqh(156,4) : warning 91: deprecated behavior, hidden 
method calling will be disabled in a future MQL compiler version
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Include\EasyAndFastGUI\Controls\ProgressBar.mqh(260,4) : warning 91: deprecated behavior, hidden 
method calling will be disabled in a future MQL compiler version
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Include\EasyAndFastGUI\Controls\Table.mqh(3416,109) : warning 91: deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Include\EasyAndFastGUI\Controls\Tabs.mqh(588,47) : warning 91: deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Include\EasyAndFastGUI\Controls\Tooltip.mqh(82,17) : warning 91: deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Include\EasyAndFastGUI\Controls\Window.mqh(1289,8) : warning 91: deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Include\EasyAndFastGUI\WndEvents.mqh(302,36) : warning 91: deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Include\EasyAndFastGUI\WndEvents.mqh(302,56) : warning 91: deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Include\EasyAndFastGUI\WndEvents.mqh(1426,20) : warning 91: deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Include\EasyAndFastGUI\WndEvents.mqh(1761,33) : warning 91: deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Include\EasyAndFastGUI\WndEvents.mqh(1761,53) : warning 91: deprecated behavior, hidden method calling will be disabled in a future MQL compiler version
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Experts\TradePanel\CreateGUI.mqh(111,20) : error 199: 'AddItem' - wrong parameters count
C:\Users\x\AppData\Roaming\MetaQuotes\Terminal\xxx\MQL5\Experts\TradePanel\CreateGUI.mqh(111,28) : warning 181: implicit conversion from 'number' to 'string'
Result: 1 errors, 19 warnings

Obrigado por compartilhar,


s love nia

 

O arquivo TradePanel.mq5 não foi compilado!