Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как выделить текущую строку в DBGrid? [D5]


ksa ©   (2003-04-11 13:40:00) 

Имеется DbGrig, хочется выделить текущую строку цветом, если установить свойство dgRowSelect, то если прокрутить сетку вправо и щелкнуть на ячейке, сетка автоматом прокручивается к первому столбцу.


grusty   (2003-04-13 13:29:00) [1]

Abrams абсолютно прав. Единственное что - необходимо у DBGrid свойство Options/dgRowSelect установить в True. Тогда будет выделяться вся строка.
Другой вариант - это скачать библиотеку EhLib, где присутствует отличный компонент DBGridEh и у него обработать событие OnDrowColumnCell следующим образом:

if Rect.Top=DBGridEh2.CellRect(DBGridEh2.Col,DBGridEh2.Row).Top then DBGridEh2.Canvas.Brush.Color:=clAqua;
DBGridEh2.DefaultDrawColumnCell(Rect,DataCol,Column,State);


Alexandr   (2003-04-12 11:13:00) [2]

пользуйся на здоровье

type
THackDBGrid = class(TDBGridEh)
property DataLink;
property UpdateLock;
end;



procedure TForm1.MyGetCellParams(Sender: TObject; Column: TColumnEh;
AFont: TFont; var Background: TColor; State: TGridDrawState);
var
Selected: Boolean;
begin
if INI1.currentLine then
begin
Selected := THackDBGrid(Sender).Datalink.Active and (THackDBGrid(sender).Row
- 1 = THackDBGrid(sender).Datalink.ActiveRecord);
if Selected then
begin
BackGround := INI1.FonCurrentLine;
end;
end;
end;


Цук   (2003-04-12 10:44:00) [3]

Вариант ЮЮ не самый лучший т.к. прои нажатии Page Down или Page Up или при прокрутке колесиком мышки курсор переходит а полоса остается.


Шаман   (2003-04-12 10:42:00) [4]

А еще проще поставить InfoPower 3000, благо кряков под него тьма, и глазу приятно и по пустякам напрягатся нестоит.


ЮЮ   (2003-04-12 09:34:00) [5]

Вариант1. В АfterScroll-e DataSet-а запоминать значение ключевого поля, а в DrawDataCell-e DBGrid-a сраниваем это значение со значением ключевого поля отрисовываемой записи


ksa   (2003-04-12 08:45:00) [6]

Проблема как раз в том, что условие (gdSelected in state) выполняется только на текщей ячейке, а мне нужно выделить всю строку...


Abrams   (2003-04-11 13:45:00) [7]

Обрабатываешь событие DBGridDrawColumnCell
и пишешь там что-нить в этом роде:

if gdSelected in state then
with DBGrid.Canvas do
begin
Font.Color := clYellow;
Brush.Color := clBlack;
end;
DBGrid.DefaultDrawDataCell(Rect, Column.Field, State);


Наверх

Титульная страница Поиск, карта сайта Написать письмо