GARANTIR DESCONTO

Fórum DBGrid não pinta cor da coluna #345045

24/08/2007

0

Pessoal,

Estou juntando tudo sobre o DBGrid e estou criando o meu proprio (pois na migração do meu sistema do D5 pro 6, 7 ate o 2007 foi uma dor de cabeça só!).

Por enquanto só fiz aquela velha dica de zebrar as linhas. Porém identifiquei que quando mando trocar a cor da coluna ele não está fazendo. Estou tentando ver com pergar o status que minha coluna está sendo pintada mas não consegui.

Segue o código:
procedure TDBGridEx.DrawColumnCell(const Rect: TRect; DataCol: Integer;
          Column: TColumn; State: TGridDrawState);
var
  Linha: Integer;
begin

  Linha := DataSource.DataSet.RecNo;

  if gdSelected in State then
  begin
    if FSelectedFontBold then    
      Self.Canvas.Font.Style := [fsBold];

    Self.Canvas.Brush.Color := FSelectedColor;
    Self.Canvas.Font.Color := FSelectedForeColor;
    Self.Canvas.FillRect(Rect);
    inherited DefaultDrawDataCell(Rect, Column.Field, State);
  end
  else
    if odd(Linha) then
    begin
      Self.Canvas.Brush.Color := FOddColor;
      Self.Canvas.Font.Color := FOddForeColor;
      Self.Canvas.FillRect(Rect);
      inherited DefaultDrawDataCell(Rect, Column.Field, State);
    end
    else
    begin
      Self.Canvas.Brush.Color := FEvenColor;
      Self.Canvas.Font.Color := FEvenForeColor;
      Self.Canvas.FillRect(Rect);
      inherited DefaultDrawDataCell(Rect, Column.Field, State);
    end;

    inherited DrawColumnCell(Rect, DataCol, Column, State);

end;


Está tudo perfeito só precisava mudar a cor da coluna mas não identifico direito os status.

No click do título da coluna tem:

procedure TDBGridEx.TitleClick(Column: TColumn);
var
  Campo: String;
begin
  inherited;

  if (DataSource.DataSet as TClientDataSet).IndexFieldNames <> ´´ then
    Columns[DataSource.DataSet.FieldByName((DataSource.DataSet as TClientDataSet).IndexFieldNames).Index].Title.Color := FixedColor;

  if not (Column.Field.DataType in [ftBlob, ftMemo]) then
    if Column.Field.FieldKind = fkData then
    begin
      (DataSource.DataSet as TClientDataSet).IndexFieldNames := Column.FieldName;
      Column.Title.Color := $00FFBB77;
      Columns[Column.Index].Color := clYellow;
    end;

  inherited TitleClick(Column);

end;


Obrigado!!!


Romulocpd

Romulocpd

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar