Обсуждение статьи "Графические интерфейсы IX: Элементы "Индикатор выполнения" и "Линейный график" (Глава 2)" - страница 2
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Почему?
Декларируй ТИПЫ данных вначале программы, а после - инициируй значения переменных объявленных тобою типов.
m_progress_bar.Update(i,total); вообще ни о чем. Какого размера столбик она показать должна?
Декларируй ТИПЫ данных вначале программы, а после - инициируй значения переменных объявленных тобою типов.
...
m_progress_bar.Update(i,total); вообще ни о чем. Какого размера столбик она показать должна?
double new_width=(m_current_index/m_steps_total)*m_bar_bg.XSize();
вот такого ...вот такого ...
1. Декларация типа данных.
2. Присвоение значения переменной этого типа.
Если не складывается, значит - что-нибудь перепутал.
Правила входа в помещение:
1. Граната.
2. Автомат.
3. Я.
Главное - не перепутать.
1. Декларация типа данных.
2. Присвоение значения переменной этого типа.
Если не складывается, значит - что-нибудь перепутал.
Правила входа в помещение:
1. Граната.
2. Автомат.
3. Я.
Главное - не перепутать.
Наверное твои слова слишком мудрёные для моего неокрепшего после отпуска разума...
Зачем зюйд-зюйд-вест?
Анатолий, прошу прощения за навязчивость, но хотелось бы знать каким образом возможно обновлять прогресс-бар внутри цикла с тяжёлыми вычислениями.
Например, имеем прогресс-бар m_progress_bar, имеем цикл внутри CProgram
Мог бы пояснить на таком "абстрактом" примере что я не понимаю?
Наверное эти тяжёлые вычисления такие долгие, что программа никак не может выйти из функции Func() ? Поэтому прогресс-бар не обновляется? Может быть там вечный цикл?
Для управления видимостью у каждого элемента есть методы Show() и Hide().
m_progress_bar.Hide(); // не скрывает почему-то прогресс-бар, приходится скрывать его под иным граф. объектом
//---
В общем, сложно что-то сказать по вырванному из контекста блоку кода. Рабочий пример с прогресс баром, где всё работает, показан в статье: Графические интерфейсы X: Обновления для библиотеки Easy And Fast (build 2)
А ещё лучше приложить минимальный код для воспроизведения. Это наиболее быстрый способ получить подсказку. Для воспроизведения достаточно простой схемы:
Кнопка на главном окне открывает диалоговое окно. Кнопка на диалоговом окне запускает "тяжеловесные расчёты".
Наверное эти тяжёлые вычисления такие долгие, что программа никак не может выйти из функции Func() ? Поэтому прогресс-бар не обновляется? Может быть там вечный цикл?
Для управления видимостью у каждого элемента есть методы Show() и Hide().
//---
В общем, сложно что-то сказать по вырванному из контекста блоку кода. Рабочий пример с прогресс баром, где всё работает, показан в статье: Графические интерфейсы X: Обновления для библиотеки Easy And Fast (build 2)
Да, Анатоль, в твоих примерах работает, естественно. Но в них ведь лишь пример, бутафория. Прогресс-бар, пример его обновления, выполнен в таймере с абстрактными величинами.
Когда начинаю делать не в таймере с гипотетическими величинами, а в обычном длительном цикле внутри программы, а не таймера, то прогресс-бар не обновляется во время цикла, Он показывается уже обновлённым при повторном его показе.
Тебе не сложно привести пример работы с индикатором выполнения в основной программе в каком-нибудь цикле? Например в таком:
было бы интересно посмотреть правильную работу с индикатором выполнения, а не то, как мне кажется должно быть.
Да, Анатоль, в твоих примерах работает, естественно. Но в них ведь лишь пример, бутафория. Прогресс-бар, пример его обновления, выполнен в таймере с абстрактными величинами.
Когда начинаю делать не в таймере с гипотетическими величинами, а в обычном длительном цикле внутри программы, а не таймера, то прогресс-бар не обновляется во время цикла, Он показывается уже обновлённым при повторном его показе.
Может ChartRedraw() поможет?
Да, спасибо, m_chart.Redraw() помог:
Скриншоты торговой платформы MetaTrader
KBR, D1, 2016.08.22
Just2Trade Online Ltd, MetaTrader 5, Demo