![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 14.10.2011
Сообщений: 48
|
![]()
Здравствуйте. Подскажите пожалуйста как можно организовать выделение строки dbgrid при нажатии например пробела.
Знаю что изменить цвет строки можно через DBGrid1DrawColumnCell. Проверка нажатия идет через onkeypress. Есть мысль вызвать процедуру DBGrid1DrawColumnCell в процедуре onkeypress если клавиша пробел нажата, но что то не могу сообразить как это реализовать. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]()
DbgridDrawColumnCell вызывается в любой момент когда система(НО не ВЫ) решает что ячейку(строку/колонку/таблицу/форму целиком) надо и есть возможность(ВСЕ прочие действия по мнению системы выполнены) путем ПОСЫЛКИ сообщения ВАМ (приложению/программе) WM_PAINT (одним из результатов которого и является вызов DBGridDrawColumnCell ПРЕДНАЗНАЧЕННОЕ чтобы программа могла модифицировать "стандартное поведение" рисование )
Если мы хотим вмешаться в рисование мы должны установить флаг который мы СМОЖЕМ потом проверить в DBGridDRawColumnCell и определить параметры отрисовки для указанной ячейки(колонки+ строки) и сообщить системе от том что неплохо бы заняться прорисовкой объекта заново (Repaint|Invalidate|...). Теперь когда она "освободится" все будет нарисовано в соответствии с вашими пожеланиями (флаг + код DBgridColumnDrawCell)
программа — запись алгоритма на языке понятном транслятору
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
И поскольку в строке грида отображается информация некоторой записи датасета этот флаг обычно поле или комбинация полей датасета. Или чего либо однозначно связанного с информацией этой записи
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#4 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]() Цитата:
Цитата:
программа — запись алгоритма на языке понятном транслятору
|
||
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 14.10.2011
Сообщений: 48
|
![]()
Смысл задачи такой, что выводятся данные запроса и пользователь их сравнивает с тем что на бумаге и чтобы не запутаться что он уже посмотрел, а что нет, ему надо выделить строку.
Никаких больше действий не будет, только выделить и убрать выделение. Я менял цвет строки через edit. Ставил что если нажата клавиша пробел, то edit-у присваивается 1 и цвет меняется на серый, если нажата клавиша enter, то edit-у присваивается 0 и цвет строки становится белым. Но это очень топорно получается и не совсем правильно. Вводить поле для флага то же не очень бы хотелось. Последний раз редактировалось city32; 04.04.2015 в 17:05. |
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]()
поле вводится в НД(DataSet) связанный с DBgrid (можно как Вычислимое но тогда нужен еще и массив по которому его вычислять)
далее можно 1 показать данное поле как checkbox 2 показать поле как 0/1 3.нарисовать строчку как угодно в зависимости от данного поля (DrawGridColumnCell) 4. Безо всяких дополнительных полей использовать DBGrid.Options. Цитата:
программа — запись алгоритма на языке понятном транслятору
|
|
![]() |
![]() |
![]() |
#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 |