![]() |
|
|
![]()
|
|
| EvgeniyK77 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.8.2006 Репутация: нет Всего: нет |
Проблема такая. При удалении в цикле большого количества компонент видно, как они промаргивают цветом фона. Смотрится, конечно, не красиво. Можно ли как то этого избежать? Может, есть метод, который запрещает отрисовку и парный ему, разрешающий?
|
|||
|
||||
| Mysterio |
|
|||
![]() Планирующий ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 28.12.2004 Репутация: нет Всего: нет |
Какие именно компоненты и откуда ты их удаляешь?
|
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 57 Всего: 146 |
Form1->DoubleBuffered = true;
|
|||
|
||||
| EvgeniyK77 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.8.2006 Репутация: нет Всего: нет |
Удаляются с TabSheet-а PageControl-а. А какие - не помню, так как данную программу делает коллега.
Спасибо! Попробуем. |
||||
|
|||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
А может будет достаточно сбросить ненужным TabSheet'ам проперть TabVisible в false? |
||||
|
|||||
| EvgeniyK77 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.8.2006 Репутация: нет Всего: нет |
А это уже есть. Промаргивает именно фон. Правда, тут ещё надо разбираться, чей это фон, и сколько раз мы попадаем в отрисовку данного компонента. |
|||
|
||||
| xvr |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Не понял - у вас удаляется целиком TabSheet или только компоненты с него? Если второе, то делать TabVisible=false нельзя - будет моргать собственно PageControl.
|
||||||
|
|||||||
| EvgeniyK77 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.8.2006 Репутация: нет Всего: нет |
Удаляется не страница целиком, а несколько (много) компонент с неё. И в процессе удаления заметно неприятное промаргивание фона.
А свойство Visible (TabVisible то тут не при чём) сбрасывается для всех страниц, кроме текущей не при удалении элементов, а при смене текущей страницы. Это сообщение отредактировал(а) EvgeniyK77 - 3.2.2009, 09:49 |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Понятно, тогда только двойная буферизация (DoubleBuffered = true)
|
||||
|
|||||
| EvgeniyK77 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.8.2006 Репутация: нет Всего: нет |
Да вроде отключение нетекущих страниц ускорило загрузку.
А вот с двойной буферизацией облом-с получился. Не помогло ни фига. Как промаргивал фон, так и промаргивает. |
|||
|
||||
| 586 |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 57 Всего: 146 |
А если попробовать перехватить WM_ERASEBKGND...
// твой код
Это сообщение отредактировал(а) 586 - 4.2.2009, 00:04 |
||||||
|
|||||||
| EvgeniyK77 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 19.8.2006 Репутация: нет Всего: нет |
Вот... вот... вот... Я интуитивно подозревал что-то такое. Мы сначала ставили счётчики на WM_PAINT, но они давали меньшее число отрисовок, чем наблюдалось визуально. А когда я читал про InvalidateRect() из WinAPI, то обратил внимание на параметр bErase и заподозрил зацепку. Получается, что у Windows-а две фазы рисования: 1 - фон, 2 - что-то ещё? Кстати, получилось с DoubleBuffered. Нужно было его менять на true не для формы, а для страницы. Спасибо, кстати, отозвавшимся; вы реально помогли. |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |