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

 
Erro na GUI do EasyAndFast

Versão MT4.

Experts\Article09\TestLibrary03

O Edit está sempre piscando.

Anatoli Kazharski Por favor, ajude a resolver esse erro.

https://www.mql5.com/en/forum/274301


EasyAndFast GUI bug
EasyAndFast GUI bug
  • 2018.08.20
  • www.mql5.com
I download the library of the last MT4 version https://www.mql5.com/en/code/19703 Experts\Article09\TestLibrary03 The Edit is always flickering...
 
Oleksii Chepurnyi:

Boa tarde.

Problema maior :)

Crie um objeto dinâmico, por exemplo, um rótulo

...

Não testei a biblioteca para a criação de objetos dinâmicos, portanto, não posso lhe dar nenhuma orientação agora.

 

Outro exemplo de um aplicativo cuja GUI é criada usando essa biblioteca:


 
greentreen:

Versão MT4.

Infelizmente, não posso ajudar agora, pois ela não funcionava mais no MT4. Essa versão da biblioteca foi testada apenas no MT5.

 
Anatoli Kazharski:

Não testei a biblioteca para criação de objetos dinâmicos, portanto, não posso aconselhá-lo no momento.

Foi o que pensei :)

Para objetos simples, escrevi o seguinte:

//+------------------------------------------------------------------+
//|| Remove um ponteiro da matriz de elementos.
//+------------------------------------------------------------------+
void CWndContainer::DeleteElementsFromArray(const int window_index,const int id)
  {
   int windows_total=::ArraySize(m_windows);
//--- Se não houver formulários para controles no banco de dados
   if(windows_total<1)
     {
      ::Print(__FUNCTION__,"Não existe uma forma única.");
      return;
     }
//--- Se a solicitação for para um formulário inexistente
   if(window_index>=windows_total)
     {
      ::Print(PREVENTING_OUT_OF_RANGE," window_index: ",window_index,"; windows total: ",windows_total);
      return;
     }
//--- Remover elementos da matriz comum
   DeleteElement(id,m_wnd[window_index].m_elements);
//--- Remova os elementos principais da matriz
   DeleteElement(id,m_wnd[window_index].m_main_elements);
//--- 
   DeleteElement(id,m_wnd[window_index].m_timer_elements);
//--- 
   DeleteElement(id,m_wnd[window_index].m_available_elements);
//--- 
   DeleteElement(id,m_wnd[window_index].m_auto_x_resize_elements);
//--- 
   DeleteElement(id,m_wnd[window_index].m_auto_y_resize_elements);
  }
//+------------------------------------------------------------------+
//|| Remove um ponteiro da matriz de elementos.
//+------------------------------------------------------------------+
template<typename T>
void CWndContainer::DeleteElement(const int id,T &array[])
  {
   bool del=false;
   for(int i=0;i<ArraySize(array);i++)
     {
      if(del)
        {
         if(i==ArraySize(array)-1) break;
         array[i] = array[i+1];
         continue;
        }
      if(array[i].Id()==id)
        {
         del=true;
         if(i==ArraySize(array)-1) break;
         array[i] = array[i+1];
        }
     }
   if(del) ArrayResize(array,ArraySize(array)-1,RESERVE_SIZE_ARRAY);
  }
//+------------------------------------------------------------------+
 

Você pode me dizer se, na tabela, o botão com uma imagem é adicionado somente à primeira coluna, e nas demais não funciona.

Isso é um bug ou não?

 
Vladimir Ananich:

Na tabela, o botão com uma imagem é adicionado somente à primeira coluna, e nas demais não funciona.

Você pode adicionar a todas elas.

 
Anatoli Kazharski:

Você pode adicionar a tudo.

Obrigado, já descobri.

Mas, estranhamente, se o alinhamento na célula estiver definido como centralizado ou à direita, a imagem não ficará visível.

Se o alinhamento for à esquerda, ela funciona bem.

 
Vladimir Ananich:

Obrigado, já o tenho.

Mas, estranhamente, se o alinhamento na célula for definido como centralizado ou na borda direita, a imagem não ficará visível.

Se estiver na borda esquerda, ela funciona bem.

Sim, agora existe essa restrição (somente na borda esquerda).