![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Steel |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 14.5.2006 Где: Россия, Саратов Репутация: нет Всего: нет |
В общем дела обстоят следующщим образом... Есть проект. Что-то напоминающее почтовый клиент. В нем есть:
1) ProgressBar, отражающий процесс приема письма 2) ListView отображающий список писем с их характеристиками 3) TreeView, содержащий список папок Пишу на Delphi2007 под Win7. Начал реализовывать перетскивание мышой писем в папки (ListView -> TreeView) и столкнулся со следующей проблеммой: Если провести взятым элементом ListView над элементами TreeView - последние начинают закрашиваться синим цветом (т.е. после ухода мыши с них выделение не целиком спадает). Игрался с перерисовкой, но безуспешно. Проблема решилась установкой галки "Enable runtime themes" в свойствах проекта. Зато возникла проблема с ProgresssBar-ом. Отрисовка прогресса приема файла перестала успевать за позицией. Т.е. позиция уже на 100%, а отрисовка к примеру еще на середине. Отсюда вопрос: Можно-ли отключить стиль одного только ProgressBar ? Сляпал демонстрационный проектик. Прикладываю. Присоединённый файл ( Кол-во скачиваний: 14 )
ProgrTemp.rar 228,82 Kb |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Не вижу никаких артефактов с прогрессбаром.
Могу предположить, что просто не хватает мощности компьютера. Попробуй обновлять прогрессбар не на каждом шаге цикла, а на каждом сотом шаге. Это сильно понизит нагрузку. Со включенными темами процесс перерисовки заметно прожорливее. |
|||
|
||||
| RomanEEP |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: 5 Всего: 8 |
это фича Windows Aero. Когда устанавливается новое значение прогресс бара, то Windows отрисовывает новое значение не сразу, а плавно анимирует за определенный интервал времени. чтобы убрать это можно использовать одну особенность прогресс-баров - установка значения, меньшее чем текущее происходит по умолчанию без анимации. Т.е для мнгновенной устновки прогресс бара в новое положение можно использовать такой код:
|
|||
|
||||
| Steel |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 14.5.2006 Где: Россия, Саратов Репутация: нет Всего: нет |
Такая штук происходи даже если происходит отрисовка в 3 этапа. Артефакты не у ProgressBara, а у TTreeView с выключенными темами.
Можно поподробнее, а то данный код по идее не должен делать ничего... Сорри. Пропробовал. Действительно работатет. Едиственно процесс замедлился в 3 раза. Кстати можно просто сменить позицию 2 раза на одну и туже. Тогда процесс замедляется в 2 раза. Того же эффекта можно достич установкой Sleep. Я же хотел, чтобы процесс не замедлялся. Может таки есть способ стиль у ProgressBar прибить? Это сообщение отредактировал(а) Steel - 26.5.2011, 12:01 |
||||||
|
|||||||
| RomanEEP |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: 5 Всего: 8 |
Код, который я привел нужно выполнять только тогда, когда прогресс бар устанавливается в значение "100% заполненый".
|
|||
|
||||
| Steel |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 14.5.2006 Где: Россия, Саратов Репутация: нет Всего: нет |
Тогда он сразу резко заполняется. Мне ж надо, что ьы он таки отображал процесс...
|
|||
|
||||
| Steel |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 14.5.2006 Где: Россия, Саратов Репутация: нет Всего: нет |
Если кому интересно... Сброс темы прогрессбара:
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |