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

 

Сегодня начал использовать эту библиотеку, сборка от 2019.03.13 16:43 (думаю, что сборка 16). Так вот, я использую ее для создания таблиц, работает почти идеально, в качестве ссылки я использовал статьи:

https://www.mql5.com/ru/articles/2500#para6

https://www.mql5.com/ru/articles/2897#para7

Для меня важно иметь возможность сортировки, поэтому я использую библиотеку в соответствии с инструкциями в статье "X". Если я использую эту сборку (сборка 6), то таблица работает очень хорошо, но если я использую последнюю сборку (сборка 16), то таблица не сортирует элементы, когда я нажимаю на ячейки заголовка.

Исследуя основные различия, я получил следующее в файле Table.mqh.


Это в сборке 6:

void CTable::SortData(const uint column_index=0)
{
   ...
   //--- Храните индекс последнего отсортированного столбца данных
   m_is_sorted_column_index=(int)column_index;
   //--- Сортировка
   QuickSort(first_index,last_index,column_index,m_last_sort_direction);
   //--- Обновите таблицу
   UpdateTable();
   //--- Установите значок в соответствии с направлением сортировки
   m_sort_arrow.State((m_last_sort_direction==SORT_ASCEND)? true : false);
}

Это в сборке 16:

void CTable::SortData(const uint column_index=0,const int direction=WRONG_VALUE)
{
   ...
   //--- Запомним индекс последнего отсортированного столбца данных
   m_is_sorted_column_index=(int)column_index;
   //--- Сортировка
   QuickSort(first_index,last_index,column_index,m_last_sort_direction);
}


В новой сборке нет метода "Update", поэтому я думаю, что это и есть причина отсутствия сортировки.


Таким образом, я сделал это изменение, и оно, по-видимому, сработало:

void CTable::SortData(const uint column_index=0,const int direction=WRONG_VALUE)
{
   ...
   //--- Запомним индекс последнего отсортированного столбца данных
   m_is_sorted_column_index=(int)column_index;
   //--- Сортировка
   QuickSort(first_index,last_index,column_index,m_last_sort_direction);
   
   //--- Обновите таблицу
   Update(true);
}



PS.: комментарии на русском не слишком помогают.

Graphical Interfaces VII: the Tables Controls (Chapter 1)
Graphical Interfaces VII: the Tables Controls (Chapter 1)
  • www.mql5.com
The first article Graphical Interfaces I: Preparation of the Library Structure (Chapter 1) explains in detail what this library is for. You will find a list of articles with links at the end of each chapter. There, you can also download a complete version of the library at the current stage of development. The files must be placed in the same...
 

Где находится класс Label в библиотеке? Как создать один Label?

 

Скажи Густаво! Красота?

Я тут тоже ломал голову, как сделать так, чтобы сортировка графиков работала, и случайно догадался...

Необходимо, чтобы таблица обновлялась в событии ON_SORT_DATA вашего "program.mqh", что-то вроде:

// --- Упорядоченные события таблицы
if (id == CHARTEVENT_CUSTOM + ON_SORT_DATA)
{
if (lparam == m_table_symb.Id ())
{
m_table_symb.Update (true);
return;
}
// ---
return;
}


Надеюсь, это поможет!

Здесь все работает идеально!!!

T +

Рауль

 
raulpjr:

Это англоязычный форум. Пожалуйста, публикуйте сообщения только на английском языке.

При необходимости используйте инструмент перевода сайта.

При размещении кода используйте кнопку "Код" (Alt +S).

На этот раз я отредактировал ваше сообщение.

 

Если пример ExampleEAF из библиотеки собрать как индикатор в MT4, то при попытке перетащить окно на графике индикатор падает с ошибкой

В MT5 работает нормально

array out of range in 'WndEvents.mqh' (288,72)

Если добавить проверку выхода за диапазон в первом цикле тогда перетаскивание работает

void CWndEvents::CheckElementsEvents(void)
  {
//--- Обработка события перемещения курсора мыши
   if(m_id==CHARTEVENT_MOUSE_MOVE)
     {
      //--- Выйти, если форма находится в другом подокне графика
      if(!m_windows[m_active_window_index].CheckSubwindowNumber())
         return;
      //--- Проверяем только доступные элементы
      int available_elements_total=CWndContainer::AvailableElementsTotal(m_active_window_index);
      for(int e=0; e<available_elements_total; e++)
        {
         // !!! Дополнительная проверка
         if (e >= ArraySize(m_wnd[m_active_window_index].m_available_elements)) continue;
         CElement *el=m_wnd[m_active_window_index].m_available_elements[e];
         //--- Проверка фокуса над элементами
         el.CheckMouseFocus();
         //--- Обработка события
         el.OnEvent(m_id,m_lparam,m_dparam,m_sparam);
        }
     }
//--- Все события, кроме перемещения курсора мыши
   else
     {
      int elements_total=CWndContainer::ElementsTotal(m_active_window_index);
      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);
        }
     }
//--- Направление события в файл приложения
   OnEvent(m_id,m_lparam,m_dparam,m_sparam);
  }

но перестает работать "расширение" окна на всю площадь графика и возврат обратно

Подскажите как пофиксить эту проблему чтобы и в МТ4 тоже нормально работало

В чем отличие? Никаких варнингов при компиляции в МТ4 нет, не знаю в какую сторону копать


Еще в MT4 при компиляции в виде индикатора не работает переключение фокуса в том плане, что если открыть выпадающий список и кликнуть где-то в стороне, то список не закрывается и не переходит фокус ввода к другому элементу, в режиме эксперта работает нормально

В МТ5 и эксперт и индикатор нормально работают

 
Добрый день, подскажите как-то возможно реализовать копирование и вставку текста из текстовых полей.
 

Еще один интересный глюк с таблицами. 

После нескольких вводов символы начинают двоиться а потом и троиться (см gif)

В чем может быть проблема?

Файлы:
ScreenFlow.gif  28 kb
 

CreateTextEdit, похоже, не поддерживает китайский ввод?


CreateTextEdit, похоже, не поддерживает китайский ввод?

 

Здравствуйте

Где я могу скачать MT4 версию этой библиотеки?

 
Подскажите, пожалуйста, как, используя эту библиотеку, изменить шрифт по умолчанию программы (эксперта)? Это которым печатается всё, начиная с заголовка в шапке программы. Хотя бы размер изменить (увеличить).