Experimentei esse código-fonte e funcionou. Muito bom o trabalho, obrigado!
Tentei adaptá-lo às minhas necessidades e não funcionou. Após horas de depuração, encontrei o problema:
Quando o nome de arquivo do ExampleEA.mq5 tem mais de 14 caracteres, durante a criação da caixa de combinação, a função ResourceCreate() dentro da classe Canvas falha com o erro 4016 (recurso não encontrado).
Esse comportamento é conhecido? Como não conheço as circunstâncias exatas que levam a esse erro, estou tentando descobrir como evitar esses erros.
Atualização: encontrei uma discussão correspondente com uma solução rápida aqui.
2021.01.1817:57:52.598 MacdSampleCFrames (Si-3.21,M2) CElement::CreateCanvas > Не удалось создать холст для рисования элемента (CButton): 40162021.01.1817:57:52.598 MacdSampleCFrames (Si-3.21,M2) CProgram::OnTesterInitEvent > Could not create the GUI!
Depois de uma das atualizações, o buffer da string da variável global do terminal foi reduzido e vem gerando um erro crítico há algum tempo.
Ele pode ser corrigido por meio de um hack rápido, sem precisar se aprofundar no código, apenas renomeando o arquivo de inicialização do Expert Advisor, encurtando seu nome
por exemplo, de MacdSampleCFrames.ex5 para apenas Macd.ex5.
Por que você não escreve métodos para modificar as propriedades do objeto (como fonte, tamanho, cor, cor de fundo etc.) na classe CElement em vez de usar as propriedades padrão? Isso não é muito amigável para a programação
E esses 6 se resumem aos 4 tipos de problemas a seguir. Vocês podem me informar como corrigi-los adequadamente?
1. Como faço para substituí-lo corretamente por "CElementBase::"?
//--- Определим цвет для линииcolor clr=m_back_color;
if(m_tabs.GetButtonPointer(m_selected_tab).IsLocked()) // este!
clr=m_tabs.GetButtonPointer(m_selected_tab).BackColorLocked();
//--- Рисуем линию
m_canvas.Line(x1,y1,x2,y2,::ColorToARGB(clr,m_alpha));
}
2. E aqui - quando eu substituo "el." por "CElementBase::" - há um novo erro de compilação dizendo "IsAvailable - access tonon-static member of function" - como você resolve isso corretamente?
for(int e=0; e<elements_total; e++)
{
//--- Проверяем только доступные элементы
CElement *el=m_wnd[m_active_window_index].m_elements[e];
if(!el.IsVisible() || !el.IsAvailable() || el.IsLocked())
continue;
//--- Обработка события в обработчике элемента
el.OnEvent(m_id,m_lparam,m_dparam,m_sparam);
}
3. Mesma linha: quando substituo "el.IsLocked()" por "CElementBase::IsLocked" : erro "IsLocked - acesso a membro não estático da função"
4. Com o que substituir "m_windows[0].IsLocked()"?
//--- Выйти, если интерфейс не созданif(windows_total<1)
return;
//--- Изменить размер всех элементов заблокированной формы, если включен один из режимовif(m_windows[0].IsLocked() && (m_windows[0].AutoXResizeMode() || m_windows[0].AutoXResizeMode()))
{
Por favor, ajudem! Seria ótimo usar essa biblioteca. Mas precisamos resolver esses problemas primeiro.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
E como fazer o mesmo sem editar a biblioteca?
No arquivo Element.mqh, no construtor CElement, substitua os valores m_font e m_font_size.
E como fazer o mesmo sem modificar a biblioteca?
E qual é o problema de cada elemento especificar esses valores ao criá-lo?
A biblioteca EasyAndFastGUI para a criação de interfaces gráficas:
Autor: Anatoli Kazharski
Olá, pessoal,
Experimentei esse código-fonte e funcionou. Muito bom o trabalho, obrigado!
Tentei adaptá-lo às minhas necessidades e não funcionou. Após horas de depuração, encontrei o problema:
Quando o nome de arquivo do ExampleEA.mq5 tem mais de 14 caracteres, durante a criação da caixa de combinação, a função ResourceCreate() dentro da classe Canvas falha com o erro 4016 (recurso não encontrado).
Esse comportamento é conhecido? Como não conheço as circunstâncias exatas que levam a esse erro, estou tentando descobrir como evitar esses erros.
Atualização: encontrei uma discussão correspondente com uma solução rápida aqui.
Depois de uma das atualizações, o buffer da string da variável global do terminal foi reduzido e vem gerando um erro crítico há algum tempo.
Ele pode ser corrigido por meio de um hack rápido, sem precisar se aprofundar no código, apenas renomeando o arquivo de inicialização do Expert Advisor, encurtando seu nome
por exemplo, de MacdSampleCFrames.ex5 para apenas Macd.ex5.
Como posso definir os parâmetros do rótulo de texto do Anchor(ANCHOR_RIGHT)?
É um bug! ?
Gustavo Enedir Hennemann:
Hello,
I didn't get it. What to do?
Substitua de m_main para CElementBase:: onde o aviso aparece.
Olá @Mikhail Sergeev, @Paulo Campello!
Pessoal,
Reduzi o número de avisos de 18 para 6.
E esses 6 se resumem aos 4 tipos de problemas a seguir. Vocês podem me informar como corrigi-los adequadamente?
1. Como faço para substituí-lo corretamente por "CElementBase::"?
2. E aqui - quando eu substituo "el." por "CElementBase::" - há um novo erro de compilação dizendo "IsAvailable - access tonon-static member of function" - como você resolve isso corretamente?
3. Mesma linha: quando substituo "el.IsLocked()" por "CElementBase::IsLocked" : erro "IsLocked - acesso a membro não estático da função"
4. Com o que substituir "m_windows[0].IsLocked()"?
Por favor, ajudem! Seria ótimo usar essa biblioteca. Mas precisamos resolver esses problemas primeiro.
Obrigado!