![]() |
|
|
![]()
|
|
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Компонент StringGrid. Записи в строках логически связаны, но по некоторым причинам опцию RowSelect не использую. Однако при выборе какой-либо ячейки - все прочие ячейки этой строки должны закрашиваться своим цветом. Я это реализовал в событии OnDrawCell. При навигации мышкой все работает как надо - своим цветом выделяется вся строка, которой принадлежит выбранная ячейка. Но вот когда осуществляю навигацию стрелками с клавиатуры - ячейки закрашиваются некорректно. Пробую обрабатывать событие OnKeyDown. Ставлю там лишь одну команду - StringGrid1->Refresh() . Очевидно при этом происходит отрисовка всех ячеек по новой с использованием обработчика OnDrawCell. Но проблема в том, что перерисовка грида происходит ПЕРЕД тем, как я нажимаю например стрелку вниз. То есть допустим активная ячейка такая: ряд - 3, колонка - 2. Нажимаю стрелку вниз. Вот как теперь выглядит грид - все ячейки ряда номер 3 закрашены цветом выделения, кроме ячейки в колонке номер 2 (становится белой), также цветом выделения закрашена ячейка в ряду номер 4 в колонке номер 2. Нажимаю еще раз стрелку вниз - все ячейки ряда номер 4 закрашены цветом выделения, кроме ячейки в колонке номер 2 (становится белой), также цветом выделения закрашена ячейка в ряду номер 5 в колонке номер 2. То есть как бы выделение отстает на один ряд. Если StringGrid1->Refresh() записать в обработчик события OnKeyUp, то нужная строка таки закрашивается, но происходит это не сразу. То есть я нажал клавишу со стрелкой - активная ячейка сместилась на ряд (с соответствующей закраской), а вот весь остальной ряд перекрашивается только после того, как я отпустил нажатую клавишу со стрелкой. Это не очень удобно. Так как бы решить эту небольшую проблемку с корректной перекраской выделенного ряда?
|
|||
|
||||
| Riviero |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 25.3.2010 Репутация: 2 Всего: 3 |
Может, я конечно чего-то и не понял..
|
|||
|
||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Riviero, ваш код работает не так как нужно. Сначала происходит отрисовка ячеек, а потом применяется новое значение sRow. То есть скажем, если выбрана 5-я строка, затем кликаю мышкой на 10-ую, то закрашивается выделенным цветом 5-ая. Затем кликаю на 15-ую - закрашивается 10-ая. То есть всегда как бы опаздывает закраска на один ход. При этом в том ряду, на который я кликнул - самая первая ячейка и та, на которую я непосредственно кликнул - закрашиваются выделенным цветом.
|
|||
|
||||
![]()
|
| Правила форума "С++ 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. |