Почему панель сжимается при переключении графиков? - страница 2

 
Artyom Trishkin:

Вряд ли. Отслеживаю изменения в СБ при помощи хранилища. До поломки хранилища не замечал изменений в той части СБ.

Уже разобрались. ТС не указал способ, которым он изменяет символ. У меня не тот вариант воспроизведения был. Нужный ТС способ показан здесь.

Почему панель сжимается при переключении графиков?
Почему панель сжимается при переключении графиков?
  • 2020.04.14
  • www.mql5.com
Я пытался следующий код: Вот выходное изображение: Когда я переключаюсь на валюту GBPAUD, а затем снова на EURUSD, я получаю это изображение: По...
 
Artyom Trishkin:

А попробуйте создать объект посредством new и обращаться к панели по указателю.

Не берусь утверждать и доказывать, но память стучит изнутри колокольчиком - "где-то такое уже было и обсуждалось в контексте метода создания объекта и обращения к нему"...

Если я это правильно поправил, создание панели через указатель, то все то же самое.

Просто в четверке ведь нормально себя ведет. Пусть разработчики проверят, пример ТС взят из СБ, он там мало что поменял.

 

Спасибо всем за обсуждение. Я попытаюсь использовать указатели, как сказал @ Артем Тришкин .

@Vasiliy Pushkaryov Спасибо за то, что направили мой вопрос на правильный форум.

 

Попробовал @Artyom Trishkin метод создания указателя.

Это ничего не изменило.

Проверьте это изображение:


Ниже приведен код:

#property description "Control Panels and Dialogs. Demonstration class CButton"
#include <Controls\Dialog.mqh>
#include <Controls\Button.mqh>
//+------------------------------------------------------------------+
//| defines                                                          |
//+------------------------------------------------------------------+
//--- indents and gaps
#define INDENT_LEFT                         (11)      // indent from left (with allowance for border width)
#define INDENT_TOP                          (11)      // indent from top (with allowance for border width)
#define CONTROLS_GAP_X                      (5)       // gap by X coordinate
//--- for buttons
#define BUTTON_WIDTH                        (100)     // size by X coordinate
#define BUTTON_HEIGHT                       (20)      // size by Y coordinate
//---
CAppDialog           *AppWindow;
CButton              m_button1;                       // the button object
CButton              m_button2;                       // the button object
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create application dialog
   AppWindow =new CAppDialog();
   if(!AppWindow.Create(0,"AppWindow with Two Buttons",0,40,40,380,344))
      return(INIT_FAILED);
//--- create dependent controls
   if(!CreateButton1())
      return(false);
   if(!CreateButton2())
      return(false);
//--- run application
   AppWindow.Run();
//--- succeed
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   Comment("");
//--- destroy dialog
   AppWindow.Destroy(reason);
   delete AppWindow;
   AppWindow=NULL;
  }
//+------------------------------------------------------------------+
//| Expert chart event function                                      |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // event ID
                  const long& lparam,   // event parameter of the long type
                  const double& dparam, // event parameter of the double type
                  const string& sparam) // event parameter of the string type
  {
   AppWindow.ChartEvent(id,lparam,dparam,sparam);
  }
//+------------------------------------------------------------------+
//| Create the "Button1" button                                      |
//+------------------------------------------------------------------+
bool CreateButton1(void)
  {
//--- coordinates
   int x1=INDENT_LEFT;        // x1            = 11  pixels
   int y1=INDENT_TOP;         // y1            = 11  pixels
   int x2=x1+BUTTON_WIDTH;    // x2 = 11 + 100 = 111 pixels
   int y2=y1+BUTTON_HEIGHT;   // y2 = 11 + 20  = 32  pixels
//--- create
   if(!m_button1.Create(0,"Button1",0,x1,y1,x2,y2))
      return(false);
   if(!m_button1.Text("Button1"))
      return(false);
   if(!AppWindow.Add(m_button1))
      return(false);
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Create the "Button2"                                             |
//+------------------------------------------------------------------+
bool CreateButton2(void)
  {
//--- coordinates
   int x1=INDENT_LEFT+2*(BUTTON_WIDTH+CONTROLS_GAP_X);   // x1 = 11  + 2 * (100 + 5) = 221 pixels
   int y1=INDENT_TOP;                                    // y1                       = 11  pixels
   int x2=x1+BUTTON_WIDTH;                               // x2 = 221 + 100           = 321 pixels
   int y2=y1+BUTTON_HEIGHT;                              // y2 = 11  + 20            = 31  pixels
//--- create
   if(!m_button2.Create(0,"Button2",0,x1,y1,x2,y2))
      return(false);
   if(!m_button2.Text("Button2"))
      return(false);
   if(!AppWindow.Add(m_button2))
      return(false);
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
 
jaffer wilson:

Попробовал @Artyom Trishkin метод создания указателя.

Это ничего не изменило.

Проверьте это изображение:


Ниже приведен код:

Ответ кроется в кнопке  Свернуть. Сверните график и Вы увидите, что Ваш размер графика меньше размера панели. Поэтому панель сворачивается в полосу (срабатывает защита панели).

 
Vladimir Karputov:

Ответ кроется в кнопке  . Сверните график и Вы увидите, что Ваш размер графика меньше размера панели. Поэтому панель сворачивается в полосу (срабатывает защита панели).

когда-то писал о сходной проблеме. позже встретился ещё с парой-тройкой неудобств, связанных со считыванием данных с якобы свёрнутых графиков (явно этого не делалось)

 
Vladimir Karputov:

Ответ кроется в кнопке  . Сверните график и Вы увидите, что Ваш размер графика меньше размера панели. Поэтому панель сворачивается в полосу (срабатывает защита панели).

Дополню: магия кнопки "Свернуть график"


 
Vladimir Karputov:

Ответ кроется в кнопке  . Сверните график и Вы увидите, что Ваш размер графика меньше размера панели. Поэтому панель сворачивается в полосу (срабатывает защита панели).

Спасибо, действительно помогает.

Добавил пост

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 2360: Расширение интеграции с SQLite

Vasiliy Pushkaryov, 2020.04.15 09:02

Это решение помогает убрать проблему


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


 
Vladimir Karputov :

Дополню: магия кнопки "Свернуть график"


Это прекрасное предложение. Чем тебе за это.

Но @ Владимир Карпутов Я спрашиваю, что я могу сделать, если я хочу сделать так, как я показал здесь: # 14 ?

Потому что я хочу сделать именно так.

Пожалуйста, ведите меня за это.

Почему панель сжимается при переключении графиков?
Почему панель сжимается при переключении графиков?
  • 2020.04.14
  • www.mql5.com
Я пытался следующий код: Вот выходное изображение: Когда я переключаюсь на валюту GBPAUD, а затем снова на EURUSD, я получаю это изображение: По...
 

Ну не знаю. У меня не сворачивается. Для просмотра тык в картинку.