Форум: "Базы";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];
ВнизКак выделить текущую строку в DBGrid? Найти похожие ветки
← →
ksa (2003-04-11 13:40) [0]Имеется DbGrig, хочется выделить текущую строку цветом, если установить свойство dgRowSelect, то если прокрутить сетку вправо и щелкнуть на ячейке, сетка автоматом прокручивается к первому столбцу.
← →
Abrams (2003-04-11 13:45) [1]Обрабатываешь событие DBGridDrawColumnCell
и пишешь там что-нить в этом роде:
if gdSelected in state then
with DBGrid.Canvas do
begin
Font.Color := clYellow;
Brush.Color := clBlack;
end;
DBGrid.DefaultDrawDataCell(Rect, Column.Field, State);
← →
ksa (2003-04-12 08:45) [2]Проблема как раз в том, что условие (gdSelected in state) выполняется только на текщей ячейке, а мне нужно выделить всю строку...
← →
ЮЮ (2003-04-12 09:34) [3]Вариант1. В АfterScroll-e DataSet-а запоминать значение ключевого поля, а в DrawDataCell-e DBGrid-a сраниваем это значение со значением ключевого поля отрисовываемой записи
← →
Шаман (2003-04-12 10:42) [4]А еще проще поставить InfoPower 3000, благо кряков под него тьма, и глазу приятно и по пустякам напрягатся нестоит.
← →
Цук (2003-04-12 10:44) [5]Вариант ЮЮ не самый лучший т.к. прои нажатии Page Down или Page Up или при прокрутке колесиком мышки курсор переходит а полоса остается.
← →
Alexandr (2003-04-12 11:13) [6]пользуйся на здоровье
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;
← →
grusty (2003-04-13 13:29) [7]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);
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c