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

📄 frxprogress.pas

📁 报表源码 FastReport 3 is new generation of the report generators components. It consists of report engin
💻 PAS
字号:
{******************************************}
{ }
{ FastReport v3.0 }
{ Progress }
{ }
{ Copyright (c) 2004 }
{ by Alexander Fediachov, }
{ Fast Reports, Inc. }
{ }
{******************************************}

unit frxProgress;

interface

{$I frx.inc}

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls, ExtCtrls;

type
  TfrxProgress = class(TForm)
    Panel1:TPanel;
    LMessage:TLabel;
    Bar:TProgressBar;
    CancelB:TButton;
    procedure WMNCHitTest(var Message:TWMNCHitTest); message WM_NCHITTEST;
    procedure FormCreate(Sender:TObject);
    procedure CancelBClick(Sender:TObject);
    procedure FormHide(Sender:TObject);
    procedure FormDestroy(Sender:TObject);
  private
    FActiveForm:TForm;
    FTerminated:Boolean;
    FPosition:Integer;
    FMessage:String;
    FProgress:Boolean;
    procedure SetPosition(Value:Integer);
    procedure SetMessage(const Value:String);
    procedure SetTerminated(Value:Boolean);
    procedure SetProgress(Value:Boolean);
  public
    procedure Reset;
    procedure Execute(MaxValue:Integer; const Msg:String;
      Canceled:Boolean; Progress:Boolean);
    procedure Tick;
    property Terminated:Boolean read FTerminated write SetTerminated;
    property Position:Integer read FPosition write SetPosition;
    property ShowProgress:Boolean read FProgress write SetProgress;
    property Message:String read FMessage write SetMessage;
  end;

implementation

{$R *.DFM}

uses frxRes;

{ TfrxProgress }

procedure TfrxProgress.WMNCHitTest(var Message:TWMNCHitTest);
begin
  inherited;
  if Message.Result = htClient then
    Message.Result:= htCaption;
end;

procedure TfrxProgress.FormCreate(Sender:TObject);
begin
  frxResources.LocalizeForm(Self);
  FActiveForm:= Screen.ActiveForm;
  if FActiveForm<>nil then
    FActiveForm.Enabled:= False;

  Bar.Max:= 100;
  Position:= 0;
end;

procedure TfrxProgress.FormDestroy(Sender:TObject);
begin
  if FActiveForm<>nil then
    FActiveForm.Enabled:= True;
end;

procedure TfrxProgress.FormHide(Sender:TObject);
begin
  if FActiveForm<>nil then
    FActiveForm.Enabled:= True;
end;

procedure TfrxProgress.Reset;
begin
  Position:= 0;
end;

procedure TfrxProgress.SetPosition(Value:Integer);
begin
  FPosition:= Value;
  Bar.Position:= Value;
  BringToFront;
  Application.ProcessMessages;
end;

procedure TfrxProgress.Execute(MaxValue:Integer; const Msg:String;
  Canceled:Boolean; Progress:Boolean);
begin
  Terminated:= False;
  CancelB.Visible:= Canceled;
  ShowProgress:= Progress;
  Reset;
  Bar.Max:= MaxValue;
  Message:= Msg;

  Show;
  Application.ProcessMessages;
end;

procedure TfrxProgress.Tick;
begin
  Position:= Position+1;
end;

procedure TfrxProgress.SetMessage(const Value:String);
begin
  FMessage:= Value;
  LMessage.Caption:= Value;
  LMessage.Refresh;
end;

procedure TfrxProgress.CancelBClick(Sender:TObject);
begin
  Terminated:= True;
end;

procedure TfrxProgress.SetTerminated(Value:boolean);
begin
  FTerminated:= Value;
  if Value then Close;
end;

procedure TfrxProgress.SetProgress(Value:boolean);
begin
  Bar.Visible:= Value;
  FProgress:= Value;
  if Value then
    LMessage.Top:= 15
  else
    LMessage.Top:= 35;
end;

end.

⌨️ 快捷键说明

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