|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.04.2015, 12:01 | #1 |
Пользователь
Регистрация: 14.10.2011
Сообщений: 48
|
Изменение цвета строки Dbgrid при нажатии кнопки
Здравствуйте. Подскажите пожалуйста как можно организовать выделение строки dbgrid при нажатии например пробела.
Знаю что изменить цвет строки можно через DBGrid1DrawColumnCell. Проверка нажатия идет через onkeypress. Есть мысль вызвать процедуру DBGrid1DrawColumnCell в процедуре onkeypress если клавиша пробел нажата, но что то не могу сообразить как это реализовать. |
04.04.2015, 15:18 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
DbgridDrawColumnCell вызывается в любой момент когда система(НО не ВЫ) решает что ячейку(строку/колонку/таблицу/форму целиком) надо и есть возможность(ВСЕ прочие действия по мнению системы выполнены) путем ПОСЫЛКИ сообщения ВАМ (приложению/программе) WM_PAINT (одним из результатов которого и является вызов DBGridDrawColumnCell ПРЕДНАЗНАЧЕННОЕ чтобы программа могла модифицировать "стандартное поведение" рисование )
Если мы хотим вмешаться в рисование мы должны установить флаг который мы СМОЖЕМ потом проверить в DBGridDRawColumnCell и определить параметры отрисовки для указанной ячейки(колонки+ строки) и сообщить системе от том что неплохо бы заняться прорисовкой объекта заново (Repaint|Invalidate|...). Теперь когда она "освободится" все будет нарисовано в соответствии с вашими пожеланиями (флаг + код DBgridColumnDrawCell)
программа — запись алгоритма на языке понятном транслятору
|
04.04.2015, 15:26 | #3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
И поскольку в строке грида отображается информация некоторой записи датасета этот флаг обычно поле или комбинация полей датасета. Или чего либо однозначно связанного с информацией этой записи
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
04.04.2015, 15:56 | #4 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
Цитата:
программа — запись алгоритма на языке понятном транслятору
|
||
04.04.2015, 16:59 | #5 |
Пользователь
Регистрация: 14.10.2011
Сообщений: 48
|
Смысл задачи такой, что выводятся данные запроса и пользователь их сравнивает с тем что на бумаге и чтобы не запутаться что он уже посмотрел, а что нет, ему надо выделить строку.
Никаких больше действий не будет, только выделить и убрать выделение. Я менял цвет строки через edit. Ставил что если нажата клавиша пробел, то edit-у присваивается 1 и цвет меняется на серый, если нажата клавиша enter, то edit-у присваивается 0 и цвет строки становится белым. Но это очень топорно получается и не совсем правильно. Вводить поле для флага то же не очень бы хотелось. Последний раз редактировалось city32; 04.04.2015 в 17:05. |
04.04.2015, 17:43 | #6 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
поле вводится в НД(DataSet) связанный с DBgrid (можно как Вычислимое но тогда нужен еще и массив по которому его вычислять)
далее можно 1 показать данное поле как checkbox 2 показать поле как 0/1 3.нарисовать строчку как угодно в зависимости от данного поля (DrawGridColumnCell) 4. Безо всяких дополнительных полей использовать DBGrid.Options. Цитата:
программа — запись алгоритма на языке понятном транслятору
|
|
04.04.2015, 18:33 | #7 |
Пользователь
Регистрация: 14.10.2011
Сообщений: 48
|
спасибо буду пробовать
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Изменение цвета фона строки в DBGrid | Ericnex | БД в Delphi | 6 | 30.08.2012 13:37 |
изменение цвета объекта при нажатии кнопки мыши | con | Visual C++ | 0 | 10.06.2012 02:56 |
Изменение процедур, исполняемых при нажатии кнопки. | AlexeyKrupnik | Общие вопросы Delphi | 2 | 28.04.2012 00:27 |
Изменение цвета кнопки при ее нажатии | RedRec | Microsoft Office Excel | 2 | 04.08.2011 09:11 |