procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
var
ProgressRect, ATextRect: TRect;
DBGridEh: TDBGridEh;
DataSet: TDataSet;
Percent: Integer;
PercentText: string;
begin
if not (Sender is TDBGridEh) then Exit;
DBGridEh := Sender as TDBGridEh;
DataSet := DBGridEh.DataSource.DataSet;
with DBGridEh.Canvas do
begin
if Column.FieldName = 'percent' then
begin
with DataSet do
Percent := Round(FieldByName(FCompleteFieldName).AsInteger
/ FieldByName(FTotalFieldName).AsInteger * 100);
with Rect do
ProgressRect := Types.Rect(Left+1, Top+1,
Left + Round((Right- Left)*(Percent/100))-1, Bottom-1);//画出进度条
Brush.Color := clWindow;
Font.Color := clWindow;
DBGridEh.DefaultDrawColumnCell(Rect, DataCol, Column, State);
Brush.Color := $00FFCC00;//设置进度条颜色
Font.Color := $00FFCC00;
DBGridEh.DefaultDrawColumnCell(ProgressRect, DataCol, Column, State);
PercentText := IntToStr(Percent) + '%';
Brush.Style := bsClear;
Font.Color := clBlack;
with Rect do
TextOut(Left + (Right-Left) div 2 -TextWidth(PercentText) div 2,
Top+1, PercentText);//画出进度数字
end;
end;
end;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
var
ProgressRect, ATextRect: TRect;
DBGridEh: TDBGridEh;
DataSet: TDataSet;
Percent: Integer;
PercentText: string;
begin
if not (Sender is TDBGridEh) then Exit;
DBGridEh := Sender as TDBGridEh;
DataSet := DBGridEh.DataSource.DataSet;
with DBGridEh.Canvas do
begin
if Column.FieldName = 'percent' then
begin
with DataSet do
Percent := Round(FieldByName(FCompleteFieldName).AsInteger
/ FieldByName(FTotalFieldName).AsInteger * 100);
with Rect do
ProgressRect := Types.Rect(Left+1, Top+1,
Left + Round((Right- Left)*(Percent/100))-1, Bottom-1);//画出进度条
Brush.Color := clWindow;
Font.Color := clWindow;
DBGridEh.DefaultDrawColumnCell(Rect, DataCol, Column, State);
Brush.Color := $00FFCC00;//设置进度条颜色
Font.Color := $00FFCC00;
DBGridEh.DefaultDrawColumnCell(ProgressRect, DataCol, Column, State);
PercentText := IntToStr(Percent) + '%';
Brush.Style := bsClear;
Font.Color := clBlack;
with Rect do
TextOut(Left + (Right-Left) div 2 -TextWidth(PercentText) div 2,
Top+1, PercentText);//画出进度数字
end;
end;
end;