Page 1 of 1

SetCellBackgroundColour и Refresh

Posted: Sat Feb 14, 2009 9:43 am
by borr_1
Хочу динамически поменять цвет одной из ячеек грида делаю

Code: Select all

grid->SetCellBackgroundColour(i, t, clFind);
grid->Refresh();//без этого изменений не будет видно
Есть ли более легковесный код не хочется каждый раз делать refresh всему гриду из-за одной ячейки можно как-то обновить только текущую ячейку?

Смотрел по форуму там люди советуют SetCellRenderer но там wxGridCellRenderer что-то у меня с ним не выходит изящно и просто. Примеры которые я находил говорили что свой потомок класса wxGridCellRenderer надо создавать - помоему это через чур.

Posted: Sun Feb 15, 2009 1:22 pm
by Ranger
смотри методы CellToRect и RefreshRect.

Posted: Mon Feb 16, 2009 6:17 am
by borr_1
Ага спасибо. Искал что-то подомное но видимо не там.
Единственное если вызывать в лоб от grid'а ничего не выходит надо через GetGridWindow() типа:

Code: Select all

grid->GetGridWindow()->RefreshRect(grid->CellToRect(i, t));

Posted: Mon Jun 08, 2009 1:36 pm
by Louigi Verona
А мне это решение не помогает. Я сделал клеточный автомат (типа игры) на wxGrid. Так вот, в самом начале у меня идёт случайное распределение цвета по клеточкам и там далее в зависимости от некоторых правил клеточки "разряжаются" - то есть становятся менее синими, переходят в чёрный цвет. Так вот, если не обновлять таблицу или обновлять вышеуказанным методом, то при клике на таблицу почему-то весь ряд становится темнее (а это, соответственно, влияет на поведение клеточной модели). Проблему удалось решить только myGrid->ForceRefresh().

А в чём вообще может быть проблему подобного "потемнения"?