Библиотеки: EasyAndFastGUI - библиотека для создания графических интерфейсов - страница 9

 
Ошибка графического интерфейса EasyAndFast

Версия MT4.

Эксперты\Статья09\TestLibrary03

Edit постоянно мерцает.

Анатолий Кажарский Пожалуйста, помогите решить эту ошибку.

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:

Добрый день.

Проблема посерьезнее :)

Создаем динамический объект, например лейбл

...

Не тестировал библиотеку на динамическое создание объектов, поэтому не смогу сейчас подсказать. 

 

Ещё один пример приложения, GUI которого создано с помощью этой библиотеки:


 
greentreen:

Версия MT4.

К сожалению, сейчас я не могу помочь, так как она больше не работает на MT4. Эта версия библиотеки была протестирована только на MT5.

 
Anatoli Kazharski:

Не тестировал библиотеку на динамическое создание объектов, поэтому не смогу сейчас подсказать. 

Так и подумал :)

Для несложных объектов написал вот такое:

//+------------------------------------------------------------------+
//| Удаляет указатель из массива элементов                           |
//+------------------------------------------------------------------+
void CWndContainer::DeleteElementsFromArray(const int window_index,const int id)
  {
   int windows_total=::ArraySize(m_windows);
//--- Если в базе нет форм для элементов управления
   if(windows_total<1)
     {
      ::Print(__FUNCTION__," > Нету ни одной формы.");
      return;
     }
//--- Если запрос на несуществующую форму
   if(window_index>=windows_total)
     {
      ::Print(PREVENTING_OUT_OF_RANGE," window_index: ",window_index,"; windows total: ",windows_total);
      return;
     }
//--- Удалим из общего массива элементов
   DeleteElement(id,m_wnd[window_index].m_elements);
//--- Удалим из массива главных элементов
   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);
  }
//+------------------------------------------------------------------+
//| Удаляет указатель из массива элементов                           |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
 

Подскажите , в таблице кнопка с картинкой добавляется только в первый столбик , а в остальные не работает .

Это баг или нет ?

 
Vladimir Ananich:

Подскажите , в таблице кнопка с картинкой добавляется только в первый столбик , а в остальные не работает .

Во все можно добавлять.

 
Anatoli Kazharski:

Во все можно добавлять.

Спасибо , я разобрался .

Но странно , если в ячейке выставлено выравнивание по центру или по правому краю , то картинку не видно .

Если по левому то работает нормально .

 
Vladimir Ananich:

Спасибо , я разобрался .

Но странно , если в ячейке выставлено выравнивание по центру или по правому краю , то картинку не видно .

Если по левому то работает нормально .

Да, сейчас такое ограничение есть (только по левому краю).