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


Автор: Waterman 9.5.2007, 18:51
Дл раскрашивания строк BGrid в Delphi 6 применил такую процедуру:
Код

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);

 begin

 IF DBGrid1.DataSource.DataSet.RecNo mod 2 = 1 Then
  begin
    DBGrid1.Canvas.Font.Color := clBlack;
    DBGrid1.Canvas.Brush.Color:= clCream;

  end;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

end;
 
Но почему-то нет периодичности закрашивания. Красит безсистемно, хотя должна чередовать чётные и нечётные. В чём ошибка. 

Автор: Waterman 9.5.2007, 19:40
Пробовал вот так:
Код

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);

 begin
with DBGrid1.Canvas do
begin
if odd(Table1.RecNo) then Brush.Color := clSilver else Brush.Color :=
clBlue;
FillRect(Rect);
end;

DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

end;


Ситуация повторилась. Непонятно.  smile 

Автор: Waterman 11.5.2007, 08:29
Нашёл в чём проблема. Если производиться сортировка записей типа:
Код

Table1.IndexName :=('Num');

нарушается последовательность раскраски строк. Как можно решить эту проблемку. Хочется, чтобы таблицы выглядели посимпатичнее. Но сортировка нужна.

Автор: Waterman 30.5.2007, 20:11
Как можно дополнить эту процедуру, что бы происходила закраска не только первой колонки, но и двух других. Но в них значения строковые.
Код

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
  var holdColor: TColor;

  begin
 holdColor := DBGrid1.Canvas.Brush.Color; 
  if Column.FieldName = 'kln'  then
  if (Column.Field.AsInteger mod 2 <> 0) then

    begin
      DBGrid1.Canvas.Brush.Color := clWhite;
      DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      DBGrid1.Canvas.Brush.Color := holdColor;

    end;

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