Стандартная библиотека UI компонент. CAppDialog. CPanel на нём. метод CPanel.Bottom() который set не отрабатывает?
Спасибо, за совет, ибо проблема по прежнему актуальна. И что делать - я не знаю.
Единственное, что надумал - это действительно переходить на другую GUI библиотеку. Порыскав по сообществу остановился на библиотеке Анатолия Кажарского (respect товарищу):
https://www.mql5.com/ru/articles/3527
Если вдруг кто-нибудь сможет посоветовать нубу что-нибудь более адекватное - буду признателен.

- www.mql5.com

- www.mql5.com
На всякий случай, чтобы поставить точку в треде (вопрос был - теперь есть ответ) - вот как можно переместить или поменять размер объектов стандартной либы граф. объектов.
Повторюсь, что функции .Left(), .Top(), .Right(), .Bottom() которые выставляют соответствующие значения объекты на чарте не перемещают и его размеры не изменяют (хотя внутренние переменные, например m_rect изменяют). Зачем тогда они - загадка (setter stub?).
Адекватно (ожидаемо) работают только возвращающие текущее значение.
int x1 = OBJ.Left(); int x2 = OBJ.Right();
int y1 = OBJ.Top(); int x2 = OBJ.Bottom();
Перемещение объекта
//изменяем координаты
x1 = x1 +...
y1 = y1 +...
OBJ.Move( x1, y1);
Изменение размера
int w = OBJ.Width(); int h = OBJ.Height();
//Изменение размера
w = w + ...
h = h + ...
OBJ.Size( w, h);

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет!
Я набросал простенький код демонстрирующий проблему. Создаётся диалог, на нём панелька. И в делегируемых обработчиках OnTimer и OnTick панелька прирастает вниз (как мне кажется).
И я бы ожидал, что по тикам И по таймеру, мой CPanel объект должен расти вниз. В output'е по крайней мере цифры растут, а объект на экране нет.
QL 0 11:31:04.448 ea (EURUSD,H1) CProblemShowDlg::UpdateDataTimer Bottom=496
RI 0 11:31:05.359 ea (EURUSD,H1) CProblemShowDlg::UpdateDataTick Bottom=497
QP 0 11:31:05.449 ea (EURUSD,H1) CProblemShowDlg::UpdateDataTimer Bottom=498
QF 0 11:31:06.014 ea (EURUSD,H1) CProblemShowDlg::UpdateDataTick Bottom=499
KS 0 11:31:06.446 ea (EURUSD,H1) CProblemShowDlg::UpdateDataTimer Bottom=500
EM 0 11:31:07.440 ea (EURUSD,H1) CProblemShowDlg::UpdateDataTimer Bottom=501
KH 0 11:31:07.609 ea (EURUSD,H1) CProblemShowDlg::UpdateDataTick Bottom=502
GP 0 11:31:08.454 ea (EURUSD,H1) CProblemShowDlg::UpdateDataTimer Bottom=503
IE 0 11:31:09.384 ea (EURUSD,H1) CProblemShowDlg::UpdateDataTick Bottom=504
LD 0 11:31:09.445 ea (EURUSD,H1) CProblemShowDlg::UpdateDataTimer Bottom=505
OM 0 11:31:10.447 ea (EURUSD,H1) CProblemShowDlg::UpdateDataTimer Bottom=506
CE 3 11:31:11.161 ea (EURUSD,H1) ExpertRemove() function called
Конечно удивляют числа около 500, хотя я создаю y2 = 50
Но, возможно, Bottom возвращает относительно left.top чарта или какого-то другого чорта Но, ок, я бы тогда ожидал, что раз возвратный метод возвращает значение относительно некой точки, то и выставляющий принять бы тоже должен был относительно той же точки (поэтому строка
m_panel.Bottom( m_panel.Bottom() + 1);
вполне логична)
Может кто знает что я делаю не так? Может нужен принудительный Redraw() какой-то?