Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
-
borr_1
- Super wx Problem Solver

- Posts: 362
- Joined: Wed Mar 07, 2007 8:10 am
- Location: Russia, Shakhty
Post
by borr_1 » Sat Feb 14, 2009 9:43 am
Хочу динамически поменять цвет одной из ячеек грида делаю
Code: Select all
grid->SetCellBackgroundColour(i, t, clFind);
grid->Refresh();//без этого изменений не будет видно
Есть ли более легковесный код не хочется каждый раз делать refresh всему гриду из-за одной ячейки можно как-то обновить только текущую ячейку?
Смотрел по форуму там люди советуют SetCellRenderer но там wxGridCellRenderer что-то у меня с ним не выходит изящно и просто. Примеры которые я находил говорили что свой потомок класса wxGridCellRenderer надо создавать - помоему это через чур.
-
Ranger
- Knows some wx things

- Posts: 30
- Joined: Sun Jun 29, 2008 1:19 pm
Post
by Ranger » Sun Feb 15, 2009 1:22 pm
смотри методы CellToRect и RefreshRect.
-
borr_1
- Super wx Problem Solver

- Posts: 362
- Joined: Wed Mar 07, 2007 8:10 am
- Location: Russia, Shakhty
Post
by borr_1 » Mon Feb 16, 2009 6:17 am
Ага спасибо. Искал что-то подомное но видимо не там.
Единственное если вызывать в лоб от grid'а ничего не выходит надо через GetGridWindow() типа:
Code: Select all
grid->GetGridWindow()->RefreshRect(grid->CellToRect(i, t));
-
Louigi Verona
- Earned some good credits

- Posts: 127
- Joined: Tue Mar 24, 2009 10:21 am
-
Contact:
Post
by Louigi Verona » Mon Jun 08, 2009 1:36 pm
А мне это решение не помогает. Я сделал клеточный автомат (типа игры) на wxGrid. Так вот, в самом начале у меня идёт случайное распределение цвета по клеточкам и там далее в зависимости от некоторых правил клеточки "разряжаются" - то есть становятся менее синими, переходят в чёрный цвет. Так вот, если не обновлять таблицу или обновлять вышеуказанным методом, то при клике на таблицу почему-то весь ряд становится темнее (а это, соответственно, влияет на поведение клеточной модели). Проблему удалось решить только myGrid->ForceRefresh().
А в чём вообще может быть проблему подобного "потемнения"?