Обсуждение статьи "Делаем информационную панель для отображения данных в индикаторах и советниках" - страница 4
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Move(int x, int y)
Где-то тут есть недоработка. Нужно принтовать (или в отладчике глядеть, но он часто не работает) значения координат и размеров.
Вот логика в комментариях:
При попытке сдвинуть панель после изменений размера графика, он постоянно корректирует координаты и не даёт свободно перемещать окно панели...
Скорее всего значение переменной this.m_higher_wnd не актуально в методе Move(). Эти значения устанавливаются в обработчике событий:
Вполне возможно, что где-то здесь не правильно выставляются флаги превышения размеров при разворачивании окна графика.
Если вписать эти строчки
в самом начале метода Move() - чтобы принудительно устанавливать корректные значения при каждом движении мышки, баг пропадёт? Если пропадёт - значит дело в значениях этих переменных, и нужно в обработчике событий смотреть почему они не получают своих значений при разворачивании окна. Ну, а если там всё нормально, значит нужно принтовать метод Move() для поиска ошибки.
Баг пропал. В метод CDashboard::OnChartEvent() внёс такие изменения:
Чтобы постоянно не нагружать метод CDashboard::Move(), добавил проверку флагов превышения размеров в те блоки, где непосредственно меняются ширина и высота окна графика.
Баг пропал. В метод CDashboard::OnChartEvent() внёс такие изменения:
Чтобы постоянно не нагружать метод CDashboard::Move(), добавил проверку флагов превышения размеров в те блоки, где непосредственно меняются ширина и высота окна графика.