Selective Row Color procedure ..... var grid : TDBGrid; row : integer; begin grid := sender as TDBGrid; row := grid.DataSource.DataSet.RecNo; if grid.DataSource.DataSet.FieldValues['active']='N' then grid.Canvas.Brush.Color := clred else grid.Canvas.Brush.Color := clWhite; if (gdSelected in State) then begin with grid.Canvas do begin if disergrid.Focused then begin Brush.Color := clHighlight; Font.Style := Font.Style + [fsBold]; Font.Color := clHighlightText; end else brush.color := $90b090; end; end; grid.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; StrikeOut + Italized Sample if TDBGrid(Sender).DataSource.DataSet.FieldValues['branchactive']='N' then begin TDBGrid(Sender).Canvas.Font.Style := font.Style + [fsStrikeOut,fsItalic]; end; TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State); StrikeOut + ReText Sample procedure Tformreceiptdetail.dbgrddetailDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var newtxt : string; newind : integer; begin if kbmmemtable.FieldValues['skuerased']='Y' then begin TDBGrid(Sender).Canvas.Font.Style := font.Style + [fsStrikeOut]; end else TDBGrid(Sender).Canvas.Font.Style := font.Style - [fsUnderline]; if (kbmmemtable.FieldValues['skuratio']>1) and (Column.FieldName='skuqty') then begin TDBGrid(Sender).Canvas.fillrect(rect); newtxt := Column.Field.Text + '/'+inttostr(kbmmemtable.FieldValues['skuratio']); newind := rect.Right-rect.Left-TDBGrid(Sender).Canvas.TextWidth(newtxt); newind := newind div 2; newind := Rect.Left + newind; tdbgrid(sender).Canvas.TextOut(newind,Rect.Top+2,newtxt); end else TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,state); end; To display blank on the cell: procedure Tformewtreport.dbgrdDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if Column.Field.DataType = ftdate then begin (Sender as TDBGrid).Canvas.FillRect(Rect); end else begin (Sender as TDBGrid).DefaultDrawColumnCell(Rect, DataCol, Column, State); end; end; To display proper float in 99,9999.99 format procedure Tformimporttermreadingxls.dbgrdDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var s: string; begin if (Column.Field <> nil) and (Column.Field.DataType in [ftFloat, ftCurrency, ftBCD, ftFMTBcd]) then begin s := FloatToStrF(Column.Field.AsFloat, ffNumber, 10, 2); TDBGrid(Sender).Canvas.FillRect(Rect); TDBGrid(Sender).Canvas.TextOut(Rect.Right - TDBGrid(Sender).Canvas.TextWidth(s) - 2, Rect.Top + 2, s); end else TDBGrid(sender).DefaultDrawColumnCell(Rect, DataCol, Column, State); end;