User Tools

Site Tools


delphidbgridondrawcolumncell

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;
delphidbgridondrawcolumncell.txt · Last modified: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki