Bibliotecas: EasyAndFastGUI - biblioteca para criar interfaces gráficas do usuário - página 21

 
No arquivo Element.mqh, no construtor CElement, substitua os valores de m_font e m_font_size.
E como fazer o mesmo sem editar a biblioteca?
 
o-dima:
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?

 
Irracional se houver cem elementos.
 

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.

Lib 'EasyAndFastGUI': Creating Canvas fails with error 4016 after update build 2265
Lib 'EasyAndFastGUI': Creating Canvas fails with error 4016 after update build 2265
  • 2019.12.14
  • www.mql5.com
Hi guys, the following error occurs (which did not before releasing build 2265) when I create GUI elements with the EasyAndFastGUI library (https...
 
OMG. É complexo, mas avançado, e o design da interface do usuário é bonito! ÓTIMO!
 
2021.01.18 17:57:52.598 MacdSampleCFrames (Si-3.21,M2)  CElement::CreateCanvas > Не удалось создать холст для рисования элемента (CButton): 4016
2021.01.18 17: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.

 

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.

 
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
 

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::"?

//--- Определим цвет для линии
   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.

Obrigado!