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
