MMProgr.pas
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:5k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. {========================================================================}
  2. {=                (c) 1995-98 SwiftSoft Ronald Dittrich                 =}
  3. {========================================================================}
  4. {=                          All Rights Reserved                         =}
  5. {========================================================================}
  6. {=  D 01099 Dresden             = Tel.: +0351-8012255                   =}
  7. {=  Loewenstr.7a                = info@swiftsoft.de                     =}
  8. {========================================================================}
  9. {=  Actual versions on http://www.swiftsoft.de/mmtools.html             =}
  10. {========================================================================}
  11. {=  This code is for reference purposes only and may not be copied or   =}
  12. {=  distributed in any format electronic or otherwise except one copy   =}
  13. {=  for backup purposes.                                                =}
  14. {=                                                                      =}
  15. {=  No Delphi Component Kit or Component individually or in a collection=}
  16. {=  subclassed or otherwise from the code in this unit, or associated   =}
  17. {=  .pas, .dfm, .dcu, .asm or .obj files may be sold or distributed     =}
  18. {=  without express permission from SwiftSoft.                          =}
  19. {=                                                                      =}
  20. {=  For more licence informations please refer to the associated        =}
  21. {=  HelpFile.                                                           =}
  22. {========================================================================}
  23. {=  $Date: 20.01.1998 - 18:00:00 $                                      =}
  24. {========================================================================}
  25. unit MMProgr;
  26. {$I COMPILER.INC}
  27. interface
  28. uses
  29. {$IFDEF WIN32}
  30.     Windows,
  31. {$ELSE}
  32.     WinTypes,
  33.     WinProcs,
  34. {$ENDIF}
  35.     Messages,
  36.     SysUtils,
  37.     Classes,
  38.     Graphics,
  39.     Controls,
  40.     Forms,
  41.     Dialogs,
  42.     StdCtrls,
  43.     ExtCtrls,
  44.     MMObj,
  45.     MMUtils,
  46.     MMGauge;
  47. type
  48.   {-- TMMProgressForm ---------------------------------------------------}
  49.   TMMProgressForm = class(TForm)
  50.     Panel1: TPanel;
  51.     Bevel1: TBevel;
  52.     Gauge: TMMGauge;
  53.     btnCancel: TButton;
  54.   end;
  55.   TMMCloseEvent = procedure(Sender: TObject; Canceled: Boolean)of Object;
  56.   {-- TMMProgress -------------------------------------------------------}
  57.   TMMProgress = class(TMMNonVisualComponent)
  58.   private
  59.       FCaption : String;
  60.       FForm    : TMMProgressForm;
  61.       FOnClose : TMMCloseEvent;
  62.       FCanceled: Boolean;
  63.       procedure CancelButtonClick(Sender: TObject);
  64.   protected
  65.       procedure Close; virtual;
  66.   public
  67.       constructor Create(AOwner: TComponent); override;
  68.       procedure Execute;
  69.       procedure SetProgress(aValue: integer);
  70.       function  Visible: Boolean;
  71.   published
  72.       property OnClose: TMMCloseEvent read FOnClose write FOnClose;
  73.       property Caption: String read FCaption write FCaption;
  74.   end;
  75. var
  76.   MMProgressForm: TMMProgressForm;
  77. implementation
  78. {$R *.DFM}
  79. {== TMMProgress =========================================================}
  80. constructor TMMProgress.Create(AOwner: TComponent);
  81. begin
  82.    inherited Create(AOwner);
  83.    FCaption := 'Progress...';
  84.    FForm := nil;
  85.    ErrorCode := ComponentRegistered(InitCode, Self, ClassName);
  86.    if (ErrorCode <> 0) then RegisterFailed(InitCode, Self , ClassName);
  87. end;
  88. {-- TMMProgress ---------------------------------------------------------}
  89. procedure TMMProgress.Close;
  90. begin
  91.    if (FForm <> nil) then
  92.    begin
  93.       FForm.Close;
  94.       FForm.Free;
  95.       FForm := nil;
  96.       if assigned(FOnClose) then FOnClose(Self,FCanceled);
  97.    end;
  98. end;
  99. {-- TMMProgress ---------------------------------------------------------}
  100. procedure TMMProgress.Execute;
  101. begin
  102.    if (FForm = nil) then
  103.    begin
  104.       FCanceled := False;
  105.       FForm := TMMProgressForm.Create(Application);
  106.       FForm.Gauge.Caption := FCaption;
  107.       FForm.btnCancel.OnClick := CancelButtonClick;
  108.       FForm.Show;
  109.       FForm.Update;
  110.    end;
  111. end;
  112. {-- TMMProgress ---------------------------------------------------------}
  113. procedure TMMProgress.SetProgress(aValue: integer);
  114. begin
  115.    if (FForm <> nil) then
  116.    begin
  117.       FForm.Gauge.Progress := aValue;
  118.       if (aValue = 100) then Close;
  119.    end;
  120. end;
  121. {-- TMMProgress ---------------------------------------------------------}
  122. function TMMProgress.Visible: Boolean;
  123. begin
  124.    Result := (FForm <> nil) and FForm.Visible;
  125. end;
  126. {-- TMMProgress ---------------------------------------------------------}
  127. procedure TMMProgress.CancelButtonClick(Sender: TObject);
  128. begin
  129.    FCanceled := True;
  130.    Close;
  131. end;
  132. end.