![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как выделить текущую строку в 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);