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

 
jaffer wilson:

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

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

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

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

Я уже показал: сверните график и максимально увеличьте его размер.

 
jaffer wilson:

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

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

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

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

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


 

Проблема в том, что график, который теряет фокус, перестает считаться максимизированным (с точки зрения MQL API). MQL не предоставляет возможности узнать, видим ли текущий чарт (является ли активным) или скрыт. Варианты решения - либо использовать WinAPI через dll, либо такой "быстрый и грязный" фикс использовать.

Добавить метод:

int CAppDialog::GetIntegralHeight()
{
  long id = ChartFirst();
  int height = 0;
  bool maximized = false;
  do
  {
    int h = (int)ChartGetInteger(id, CHART_HEIGHT_IN_PIXELS);
    height = MathMax(h, height);
    maximized |= ChartGetInteger(id, CHART_IS_MAXIMIZED);
    id = ChartNext(id);
  } while (id != -1);
  
  if(maximized) return height;
  
  return 0;
}

Строку:

if(m_chart.HeightInPixels(m_subwin)<Height()+CONTROLS_BORDER_WIDTH)

заменить на:

if(MathMax(m_chart.HeightInPixels(m_subwin), GetIntegralHeight())<Height()+CONTROLS_BORDER_WIDTH)
 
Проверим и поправим схлопывание панелей при переключении
 
Спасибо, это хорошие предложения, и я постараюсь.