Раскраска Dbgrid

  • Автор темы Plos
  • Дата начала
Статус
Закрыто для дальнейших ответов.
P

Plos

Дл раскрашивания строк 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;

Но почему-то нет периодичности закрашивания. Красит безсистемно, хотя должна чередовать чётные и нечётные. В чём ошибка.
Поробовал по другому.
Код:
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;
Результат то же
 
P

Plos

Нашёл в чём проблема. Если производиться сортировка записей типа:


Table1.IndexName :=('Num');





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

LAW

Делай:
Код:
Query1->SQL->Text:=('SELECT поле1,поле2 FROM таблица1 GROUP BY NUM');
Query1->Open();

Удачи.
 
P

Plos

Я использую TDatabase, TDatasource, Ttable, TDBGrid и сортирую Table1.IndexName :=('Num');
Можно как-нибудь решить эту проблемку при использовании этих компонентов.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!