![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
SpaceIQ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 2.7.2009 Репутация: нет Всего: нет |
Добрый вечер!
Меня интересуют сложные заголовки (составные) StringGrid в CLX. Я сделал все как положено, написал свой компонент, переопределил метод DrawCell, там написал то что мне нужно. Все рисуется ровно один раз, никаких перегрузок сложных нет. Но при любом действии заголовки мерцает. То есть как это работает, насколько я понял. Вначале рисует стандартный фон у заголовка, потому уже вызывается переписаный метод DrawCell. И так для каждой ячейки. Неплохо было бы как-то запретить рисовать стандартный фон. В VCL так же есть различные хорошие вещи такие как DoubleBuffered, WM. В CLX этого нет. Как быть? Как бороться с мерцанием? Заранее спасибо. |
|||
|
||||
SpaceIQ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 2.7.2009 Репутация: нет Всего: нет |
Добавляю вложение:
TestStringGrid - сам компонент TestProjectGrid - проект с ним Ничего не выходит, моргает и моргает. Моргание, например, можно увидеть, если кликать по ячейкам Присоединённый файл ( Кол-во скачиваний: 7 ) ![]() |
|||
|
||||
RomanEEP |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: 5 Всего: 8 |
Один вариант сделать твой грид от TDrawGrid. Т.к TStringGrid делает дефолтную отрисовку, ты ее замалевываешь своей и получается мигание
Второй способ оверайдить метод Paint(); и устороить двойную буферизацию, но это сложнее, т.к придется подделывать FCanvas, который в секции private у TCustomControl Добавлено через 2 минуты и 51 секунду Еще можно оверайдить метод Paint(); и вместо вызова DrawLines(goFixedHorzLine in Options, goFixedVertLine in Options, 0, 0, [0, 0, Horz.FixedBoundary, Vert.FixedBoundary], clBlack, FixedColor); вставить свою отрисовку заголовка |
|||
|
||||
SpaceIQ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 2.7.2009 Репутация: нет Всего: нет |
Мда... в любом случае получает, что нужно переделывать вырисовку у StringGrid'а самому....
![]() Ладно, спасибо. |
|||
|
||||
SpaceIQ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 2.7.2009 Репутация: нет Всего: нет |
Да именно так и сделал. Скопировал все из QGrids к себе. Только DrawLines ту в приницпе удалил и поставил условие на DrawCells. Все отилично. Спасибо.
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |