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

 
Alexey Navoykov:

1.  Небольшая проблемка с заголовком таблицы, для которого задано ColumnResizeMode(true).  Если мы зажали левую кнопку мыши где-то за пределами окна, например схватили некий графический объект и перетаскиваем его, то при прохождении зажатого курсора через заголовок таблицы начинается изменение ширины столбцов, как будто мы только что нажали кнопку.

2.  В методе CWindow::Reset() заявлено о "перерисовке всех объектов окна", но перерисовывается только основной объект (а кнопки не перерисовываются)

3.  В процессе ресайза окна мышкой всё его содержимое очень сильно моргает.  Например у меня там только таблица, это вроде не требует каких-то сложных графических построений, чтобы такие лаги были при перерисовке. Возможно какие-то лишние операции выполняются при этом.

Разберёмся.

Если у Вас уже есть решения, то можете поделиться своим вариантом. 

 

Добрый вечер.

Mouse.mqh

//+------------------------------------------------------------------+
//| Проверка изменения состояния левой кнопки мыши                   |
//+------------------------------------------------------------------+
bool CMouse::CheckChangeLeftButtonState(const string mouse_state)
  {
   bool left_button_state=(bool)int(mouse_state);
//--- Отправим сообщение об изменении состояния левой кнопки мыши
   if(m_left_button_state!=left_button_state)
      ::EventChartCustom(m_chart.ChartId(),ON_CHANGE_MOUSE_LEFT_BUTTON,0,0.0,"");
//--- Вернуть текущее состояние левой кнопки мыши
   return(left_button_state);
  }
//+------------------------------------------------------------------+

Мы сюда передаем sparam и, на сколько я понимаю, любое ненулевое значение воспринимаем как нажата ЛКМ. Но ненулевые значения дают все кнопки мыши, плюс Shift и Control как минимум.

Это так и задумано?

 
Oleksii Chepurnyi:

Добрый вечер.

Mouse.mqh

Мы сюда передаем sparam и, на сколько я понимаю, любое ненулевое значение воспринимаем как нажата ЛКМ. Но ненулевые значения дают все кнопки мыши, плюс Shift и Control как минимум.

Это так и задумано?

Нет, это было просто временным решением для моих пользовательских задач.

В библиотеке сейчас вроде бы даже вообще нигде не используется. Можно доработать при необходимости.

 
Anatoli Kazharski:

Нет, это было просто временным решением для моих пользовательских задач.

В библиотеке сейчас вроде бы даже вообще нигде не используется. Можно доработать при необходимости.

Очень часто используется :) Например, перетаскивание окна, быстрое пролистывание SpinEdit. Везде, где проверяется состояние ЛКМ.

Сделал так

//+------------------------------------------------------------------+
//| Проверка изменения состояния левой кнопки мыши                   |
//+------------------------------------------------------------------+
bool CMouse::CheckChangeLeftButtonState(const string mouse_state)
  {
   bool left_button_state=((int)mouse_state==1);
//--- Отправим сообщение об изменении состояния левой кнопки мыши
   if(m_left_button_state!=left_button_state)
      ::EventChartCustom(m_chart.ChartId(),ON_CHANGE_MOUSE_LEFT_BUTTON,0,0.0,"");
//--- Вернуть текущее состояние левой кнопки мыши
   return(left_button_state);
  }
//+------------------------------------------------------------------+
 
Anatoli Kazharski:

Нет, это было просто временным решением для моих пользовательских задач.

В библиотеке сейчас вроде бы даже вообще нигде не используется. Можно доработать при необходимости.

В последнем релизе -  https://www.mql5.com/ru/code/19703

не удается добавить 

 //CCanvasTable      m_canvas_table;

Проблема видимо в том, что примеры смотрю в старых версиях!


class CProgram : public CWndEvents
  {
protected:
   //--- Временные счётчики
   CTimeCounter      m_counter1; // для обновления процесса выполнения
   CTimeCounter      m_counter2; // для обновления пунктов в статусной строке
   //--- Главное окно
   CWindow           m_window;
   //--- Картинка
   CPicture          m_picture1;
   
   //--- Главное меню и его контекстные меню
   CMenuBar          m_menubar;
   CContextMenu      m_mb_contextmenu1;

   //--- Нарисованная таблица
   //CCanvasTable      m_canvas_table;
   
   //--- Статусная строка
   CStatusBar        m_status_bar;

 
 

 
EasyAndFastGUI - библиотека для создания графических интерфейсов
EasyAndFastGUI - библиотека для создания графических интерфейсов
  • www.mql5.com
Библиотека EasyAndFastGUI дает возможность создавать графические интерфейсы для своих MQL-программ.
 
Yuriy Zaytsev:

В последнем релизе -  https://www.mql5.com/ru/code/19703

не удается добавить 

Проблема видимо в том, что примеры смотрю в старых версиях!


Взял версию Build 10 ,  https://www.mql5.com/ru/articles/3042    там работает!

Пришлось делать нечто вроде , что не есть гуд

MQL5\Include\EasyAndFastGUI_B10

MQL5\Include\EasyAndFastGUI_B16

Графические интерфейсы X: Обновления для нарисованной таблицы и оптимизация кода (build 10)
Графические интерфейсы X: Обновления для нарисованной таблицы и оптимизация кода (build 10)
  • www.mql5.com
О том, для чего предназначена эта библиотека, более подробно можно прочитать в самой первой статье: Графические интерфейсы I: Подготовка структуры библиотеки (Глава 1). В конце статей каждой части представлен список глав со ссылками. Там же есть возможность загрузить к себе на компьютер полную версию библиотеки на текущей стадии разработки...
 

Чудная библиотека!

Забацал простой но полезный индикатор для ММВБ.

Акция , рост % за день ,   далее штатные данные ,  объемы на покупку с начала дня BuyVol , объемы на продажу SellVol  , VolDeltа  разница объемов с начала дня  , доделаю еще % текущей разницы по объемам

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


 

 
Yuriy Zaytsev:

Взял версию Build 10 ,  https://www.mql5.com/ru/articles/3042    там работает!

Пришлось делать нечто вроде , что не есть гуд

MQL5\Include\EasyAndFastGUI_B10

MQL5\Include\EasyAndFastGUI_B16

Спасибо за сообщение. У меня пока совсем нет времени. Я посмотрю чуть позже, в чём там может быть проблема.

 
Yuriy Zaytsev:

Взял версию Build 10 ,  https://www.mql5.com/ru/articles/3042    там работает!

Пришлось делать нечто вроде , что не есть гуд

MQL5\Include\EasyAndFastGUI_B10

MQL5\Include\EasyAndFastGUI_B16

Когда-то библиотека была очень сильно переделана, номер билда не помню. Скорей всего в новых билдах просто нету CCanvasTable :)

В заключениях в статьям есть общая схема библиотеки на момент выхода стати, можно сравнить.

 
привет

Невозможно ли раскрасить столбец, используя функцию таблицы?


Если вы добавите два индикатора.

Функция закрытия окна закрывает два окна.
Функция сбора окна собирает два окна.
Большое спасибо за помощь.

Я из Бразилии, я использовал переводчика для написания. Извините за любую ошибку на этом языке.