⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 DBGrid进度条显示,进度条监视文件百分比
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, GridsEh, DBGridEh, DB, Types, ADODB, StdCtrls, Mask, RzEdit,
  RzLabel;

type
  TForm1 = class(TForm)
    DBGridEh1: TDBGridEh;
    ADOConnection1: TADOConnection;
    DataSource1: TDataSource;
    ADOQuery1: TADOQuery;
    BtnQty: TButton;
    procedure DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
    procedure FormCreate(Sender: TObject);
    procedure BtnQtyClick(Sender: TObject);
  private
    { Private declarations }
    FCompleteFieldName,FTotalFieldName:string;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

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;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FCompleteFieldName := 'Finish_Count';
  FTotalFieldName    := 'Total_Count';
end;

procedure TForm1.BtnQtyClick(Sender: TObject);
begin
  if not ADOConnection1.Connected then
    ADOConnection1.Connected := True;
  if not ADOQuery1.Active then
    ADOQuery1.Active:=True;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -