Стандартная библиотека. Ошибки. Баги. Вопросы.

 

В работе со Стандартной библиотекой возникают вопросы. Предлагаю задавать тут.

 

 

 Методы CreateCommon, CreateExpert, CreateIndicator являются приватными. Однако в справке они есть.

Почему они приватные? Как их использовать?

И второй вопрос. Что сделать чтобы форма (CAppDialog) на основе стандартного примера "Controls" не сворачивалась при ресайзе окна меньше формы?

 
pronych:

 Методы CreateCommon, CreateExpert, CreateIndicator являются приватными. Однако в справке они есть.

Почему они приватные? Как их использовать?

И второй вопрос. Что сделать чтобы форма (CAppDialog) на основе стандартного примера "Controls" не сворачивалась при ресайзе окна меньше формы?

За сворачивание формы отвечает

#include <Controls\Dialog.mqh>

и далее:

//--- if event was not handled, try to handle the CHARTEVENT_CHART_CHANGE event
   if(id==CHARTEVENT_CHART_CHANGE)
     {
      //--- if subwindow number is not 0, and dialog subwindow has changed its number, then restart
      if(m_subwin!=0 && m_subwin!=ChartWindowFind())
        {
         long fiction=1;
         OnAnotherApplicationClose(fiction,dparam,sparam);
        }
      //--- if subwindow height is less that dialog height, minimize application window (always)
      if(m_chart.HeightInPixels(m_subwin)<Height()+CONTROLS_BORDER_WIDTH)
        {
         m_button_minmax.Pressed(true);
         Minimize();
         m_chart.Redraw();
        }
      //--- if chart width is less that dialog width, and subwindow number is not 0, try to modify dialog width
      if(m_chart.WidthInPixels()!=Width() && m_subwin!=0)
        {
         Width(m_chart.WidthInPixels());
         m_chart.Redraw();
        }
      //--- get subwindow offset
      SubwinOff();
      return;
     }
 

Да спасибо, это я нашел. Дело в том, что по заверению Рената стандартная библиотека обновляется с каждым апдейтом. По этому ее  правка не выглядит красивым решением. Думал может есть какой другой выход?

Неплохо бы флаг иметь. Ау разработчики! Сделаете?

PS. И тогда надо чтоб объекты рисовались за пределами чарта. Тоже по этому флагу

 
pronych:

Да спасибо, это я нашел. Дело в том, что по заверению Рената стандартная библиотека обновляется с каждым апдейтом. По этому ее  правка не выглядит красивым решением. Думал может есть какой другой выход?

Неплохо бы флаг иметь. Ау разработчики! Сделаете?

PS. И тогда надо чтоб объекты рисовались за пределами чарта. Тоже по этому флагу

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

А разработчики все правильно сделали: проверка условия если высота графика меньше чем все высота формы, то минимизировать.

На уровне пользователя сворачивание формы лечиться так: нажать на графике с формой на кнопку "свернуть в окно". Затем растянуть окно до максимального размера.

После этого при потере фокуса графиком, график будет изменять свой размер до состояния "свернуть в окно", но этот размер по высоте будет больше высоты формы. Значит форма сворачиваться не будет. 

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков - Документация по MQL5
 

Не считаю правильным сворачивание при таком условии. и тем более отказ создания элементов за границей графика. 

Это надо делать как раз на уровне пользователя. А лучше иметь флаг. Его не сложно добавить.

Вот сейчас не надо мне сворачивать и надо создать форму полностью в любом случае. Как быть? Извратиться можно конечно, но флаг всё же лучше.

 
pronych:
Возможно эта минимизация лишняя и её лучше убрать. Но это опять к разработчикам

Да, я у себя ее убирал. Но для этого не надо править либу, просто наследуйтесь от нее и переопределяйте нужные методы.

 

А по поводу "Ау, разработчики" - это в сервисдеск. На форуме они отвечают только на "политически важные" вопросы. 

 
komposter:

Да, я у себя ее убирал. Но для этого не надо править либу, просто наследуйтесь от нее и переопределяйте нужные методы.

О как. Переопределить получилось. Вставил код из оригинала (надо ведь убрать только минимизацию) и вылезла куча приватных членов. Это решается?
MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • 2010.02.23
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
 
pronych:
О как. Переопределить получилось. Вставил код из оригинала (надо ведь убрать только минимизацию) и вылезла куча приватных членов. Это решается?

Я тоже намучился )

Пробовал по-разному. В итоге получилось так:

  • Чтоб отключить сворачивание при изменении размеров чарта, переопределил их Minimize и Maximize, и оставил их пустыми.
  • А чтоб сворачивалось и разворачивалось, переопределил OnClickButtonMinMax(), обращаясь к родительской кнопке вот так - CAppDialog::m_button_minmax.Pressed(), и сворачивая/разворачивая своими функциями.

Работает.