Показать сообщение отдельно
  #2  
Старый 16.02.2010, 22:19
Аватар для Ultras
Ultras Ultras вне форума
Начинающий
 
Регистрация: 09.02.2010
Адрес: Россия / Ставрополь
Сообщения: 138
Репутация: 475
По умолчанию

очень давно делал, когда ещё в армии служил:

Код:
procedure TWorkForm.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
var
  y,m,d: Word;
begin
  DecodeDate(Date,y,m,d);

  if DBGrid1.DataSource.DataSet.FieldByName('zap_cat').AsInteger = 1 then
  begin
    DBGrid1.Canvas.Brush.Color := clMoneyGreen;
    DBGrid1.Canvas.Font.Style := [];
    DBGrid1.Canvas.Font.Color := clBlack;
    DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;

  // START: Цвета по годам, кроме ОФИЦЕРОВ
  if (ZMySqlQuery1.FieldByName('base_type').AsInteger<>5) And (DBGrid1.DataSource.DataSet.FieldByName('birth').AsInteger < y-50) And Not (DBGrid1.DataSource.DataSet.FieldByName('birth').AsInteger = 0) then
  begin
    DBGrid1.Canvas.Brush.Color := clRed;
    DBGrid1.Canvas.Font.Style := [fsBold];
    DBGrid1.Canvas.Font.Color := clWhite;
    DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
  if (ZMySqlQuery1.FieldByName('base_type').AsInteger<>5) And (DBGrid1.DataSource.DataSet.FieldByName('birth').AsInteger = y-50) then
  begin
    DBGrid1.Canvas.Brush.Color := clGreen;
    DBGrid1.Canvas.Font.Style := [fsBold];
    DBGrid1.Canvas.Font.Color := clWhite;
    DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
  // END: Цвета по годам, кроме ОФИЦЕРОВ

  if State = [gdFocused] then
  begin
    DBGrid1.Canvas.Brush.Color := clSilver;
    DBGrid1.Canvas.Font.Style := [fsBold];
    DBGrid1.Canvas.Font.Color := clBlack;
    DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;

  //if State = [gdFocused,gdSelected] then
  if gdSelected in State then
  begin
    DBGrid1.Canvas.Brush.Color := clSilver;
    DBGrid1.Canvas.Font.Style := [fsBold];
    DBGrid1.Canvas.Font.Color := clBlack;
    DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
end;
Ответить с цитированием