Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.21;
Скачать: [xml.tar.bz2];




Вниз

DBGrid 


REL_   (2002-02-20 14:35) [0]

Народ, как сделать, чтобы по нажатии клавиши текущая строка в Grid"е закрашивалась (указанным цветом).
Я использую как простой Grid, так и RxGrid.



Igor_   (2002-02-20 15:02) [1]

проблема с рисованием или с вычислением нажатия клавиши?



REL_   (2002-02-20 15:07) [2]

Проблема именно с рисованием. В RxDBGrid это ксати делается просто (в событии OnGetCellParams), но строка закрашивается только после ухода с неё. Пробовал вызывать Invalidate - закрашивается весь Grid.



deleon   (2002-02-20 15:09) [3]

Рисуй в обычном на событие OnDrawDataCell меняй Brush.Color у Canvas грида, при грамотном описании события все получается замечательно!



Igor_   (2002-02-20 15:21) [4]

В DBGrid есть св-во Options.dgRowSelect, если его поставить true, то будет выделяться вся строка, но как тут цвет поменять я не знаю.
А можно вообще поставить DBGrid.DefaulDrawing:=false и переопределить DrawColumnCell что-то типа:
with DBGrid.Canvas do
begin
if (gdSelected in State) or (gdFocused in State) then
begin
Brush.Color:=clNavy; // твой цвет
FillRect(Rect);
Font.Color:=clWhite;
TextOut(Rect.right-TextWidth(Column.Field.Text)-3,
Rect.Top+2,Column.Field.Text);
end
else
DBGrid_Abon.DefaultDrawColumnCell(Rect, DataCol,Column,State);


Я делал так с DBGrid, как с RxDBGrid не знаю, не работал с ним.



REL_   (2002-02-20 15:26) [5]

А когда срабатывет данное событие? Я подозреваю, что оно сработает при перемещении курсора, т.е. я уйду с ячейки и только тогда она (ячейка) закрасится.
Если я захочу закрасить строку принудительно (например по нажатии кнопки), то мне в обработчике нажатия кнопки придётся вызывать эту процедуру - OnDrawDataCell. Тогда какие параметры ей передавать, что закрасилась именно текущая строка (не ячеёка и не весь Grid)?



Igor_   (2002-02-20 15:31) [6]

if (gdSelected in State) or (gdFocused in State) then
по идее как раз и показывает что ячейка выбрана
может или только gdSelected или gdFocused,
но у меня работало и с обоими



REL_   (2002-02-20 15:42) [7]

В твоём примере, если я ухожу с ячейки, выделение снимается или остаётся???.
Понимаешь, мне необходима такая ситуация:
Когда я перемещаюсь по Gridу, он ведёт себя как обычно. Пусть я остановился на записи №5, нажал некий Button и вся текущая строка в Grid"е выделилась. При дальнейшем продвижении курсора Grid опять ведёт себя как обычно, но выделение уже выделенной ячейки не нимается.
Таким образом, по нажатии Button"а я могу выделить несколько строк.

Как энто осуществить???



REL_   (2002-02-20 15:55) [8]

to Igor : вот только попытался попробовать твой прмер, вызывается исключение в строке TextWidth(Column.Field.Text)



Igor_   (2002-02-21 10:05) [9]

А что зо исключение? У меня вроде все нормально было.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.21;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.017 c
1-66832           UnDISCOvery           2002-03-07 16:59  2002.03.21  
С Дельфой хорошо, без Дельфы плохо ! :)


1-66922           sergey2               2002-03-06 13:41  2002.03.21  
Hint, ComboBox


6-66953           otari                 2002-01-06 20:02  2002.03.21  
Как мне отправить e-mail через мой прог !!!


1-66901           lipskiy               2002-03-06 02:11  2002.03.21  
OpenDialog перестал реагировать на InitialDir !!! Помогите разобраться с глюком.


14-66959          JohnnyCrisJoe         2002-02-06 01:35  2002.03.21  
Роджер Желязны и его влияние на сознание людей..