![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 02.07.2009
Сообщений: 7
|
![]()
Добрый вечер!
Меня интересуют сложные заголовки (составные) StringGrid в CLX. Я сделал все как положено, написал свой компонент, переопределил метод DrawCell, там написал то что мне нужно. Все рисуется ровно один раз, никаких перегрузок сложных нет. Но при любом действии заголовки мерцает. То есть как это работает, насколько я понял. Вначале рисует стандартный фон у заголовка, потому уже вызывается переписаный метод DrawCell. И так для каждой ячейки. Неплохо было бы как-то запретить рисовать стандартный фон. В VCL так же есть различные хорошие вещи такие как DoubleBuffered, WM. В CLX этого нет. Как быть? Как бороться с мерцанием? Заранее спасибо. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Самому ввести буферизацию
![]()
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Просто я лично никогда на мигание не жаловался. и в CLX тоже.
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#4 |
Регистрация: 02.07.2009
Сообщений: 7
|
![]()
Stilet,
пример добавил в приложение. TestStringGrid - сам компонент TestProjectGrid - проект с ним Моргание, например, можно увидеть, если кликать по ячейкам. Utkin, а как я такое сделать? Ведь все равно будет моргать. Как это происходит: 1) Произошло событие, требующее перерисвоки грида. 2) Грид StringGrid перерисовывает себя (какой-то метод из родителя DrawGrid вызывается, который рисует сетку, потом уже DrawCell наследника). 3) Потом я перерисовываю его из буфера. Вот если бы он изначально в мой буфер рисовать на втором шаге. что же делать... ![]() Последний раз редактировалось SpaceIQ; 13.07.2009 в 12:38. |
![]() |
![]() |
![]() |
#5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Смысл в том, что из невидимого компонента перерисовка в видимый происходит синхронно через равные промежутки времени (если грубо то в таймере), поэтому побочных эффектов типа мерцания чего-то там быть не должно в принципе. Перерисовка из теневого в видимый компонент происходит независимо от изменений в теневом компоненте, поэтому никаких дерганий и мерцаний (хотя все зависит от того каким образом ты будешь организовывать перерисовку из одного компонента в другой). В принципе всякие буферизации работают примерно таким же образом (ну различаются детали алгоритма).
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#7 | |
Регистрация: 02.07.2009
Сообщений: 7
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Мерцание | vladi | Microsoft Office Excel | 0 | 03.06.2009 17:42 |
Мерцание на Канве | SERG1980 | Мультимедиа в Delphi | 3 | 30.04.2008 08:14 |
мерцание | shad0w | Общие вопросы C/C++ | 3 | 11.12.2007 12:31 |
Мерцание объектов | Chaos-Delta | Мультимедиа в Delphi | 4 | 02.07.2007 13:59 |