Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Выделить текущую строку в DBGrid


Автор: Slyfox 16.5.2008, 11:14
Нужно поменять цвет текущей строки в DBGrid.
Когда переходим на другую строку, то цвет выбранной строки должен пометься, а предыдущей вернуться в исходное состояние(т.е. белого цвета).

Также хотелось бы знать как задавать цвет в rgb в 16-ной системе счисления.

Заранее спасибо

Автор: Frees 16.5.2008, 11:51
Цитата(Slyfox @  16.5.2008,  11:14 Найти цитируемый пост)
Нужно поменять цвет текущей строки в DBGrid.

я делаю вот так

Код

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;// событие ТDBGrid OnDrawColumnCell
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
begin
  if ( Rect.Top = DBGrid1.CellRect( DBGrid1.Col, DBGrid1.Row ).Top ) and
     ( not ( gdFocused in State ) or not DBGrid1.Focused ) then begin
     DBGrid1.Canvas.Brush.Color := clRed;
  end;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;



Автор: Slyfox 16.5.2008, 11:59
Почему-то компилятору не нравится:
Код

if ( Rect.Top = DBGrid1.CellRect( DBGrid1.Col, DBGrid1.Row ).Top ) and
     ( not ( gdFocused in State ) or not DBGrid1.Focused )

Автор: Frees 16.5.2008, 12:06
ну да совсем забыл у меня же TDBGridEh

Добавлено через 54 секунды
щас посмотрю для TDBGrid

Автор: Frees 16.5.2008, 12:47
Код

type
TPeekAtCustomDBGrid = class(TCustomDBGrid);
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  with TPeekAtCustomDBGrid(Sender) do begin
     if DataLink.ActiveRecord = Row - 1 then
       Canvas.Brush.Color := clRed
     else
       Canvas.Brush.Color := clWhite;
    DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
end;

DRKB©

Автор: Slyfox 16.5.2008, 12:47
жду, потому что гугл не очень помогает мне :(

Автор: Frees 16.5.2008, 12:49
Цитата(Slyfox @  16.5.2008,  12:47 Найти цитируемый пост)
жду, потому что гугл не очень помогает мне :(

DRKB смотри сперва потом гугл smile

Автор: Slyfox 16.5.2008, 13:00
Спасибо.
С третьего раза завел smile
Я в этой процедуре комментил несколькими способами, закомментил все правильно, но код не запускался - компилятор сказал: "Облом))".
Когда удалил комменты код запустился, комментил не этот код, а другой.

Затем вернул комменты, вставил код и запустилось. Чудеса smile

Вопроса больше нет, я счастливый человек)))

Автор: Dobermann 24.1.2009, 15:46
Frees, хорошая вещь smile , сейчас себе тоже такую воткну!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)