123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- {*******************************************************************************
- 单元名称: mProgressFrm.pas
- 单元说明: 简单的进度提示窗。
- 作者时间: Chenshilong, 2011-08-25
- *******************************************************************************}
- unit mProgressFrm;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, StdCtrls, Controls,
- ExtCtrls, Forms, ComCtrls, GifAnimator;
- type
- TmProgress = class(TForm)
- shpProgress: TShape;
- lblMessage: TLabel;
- gaProgress: TGifAnimator;
- procedure shpProgressMouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- procedure CreateProgress(AText: string);
- procedure RefreshProgress(AText: string);
- procedure CloseProgress;
- implementation
- uses ScUtils;
- var
- mProgress: TmProgress = nil;
- const
- sc_DragMove = $F012;
- {$R *.dfm}
- procedure Delay(Ams: Longint);
- var
- Time1, Time2: Longint;
- begin
- Time1 := GetTickCount();
- repeat
- Application.ProcessMessages;
- Time2 := GetTickCount();
- until (Time2 - Time1 >= Ams) or (Time2 < Time1);
- end;
- procedure CreateProgress(AText: string);
- begin
- Screen.Cursor := crHourGlass;
- if mProgress = nil then
- mProgress := TmProgress.Create(nil);
- mProgress.lblMessage.Caption := AText;
- mProgress.Show;
- mProgress.Update;
- mProgress.gaProgress.Animate := True;
- end;
- procedure RefreshProgress(AText: string);
- begin
- if mProgress = nil then Exit;
- mProgress.lblMessage.Caption := AText;
- mProgress.Update;
- end;
- procedure CloseProgress;
- begin
- if Assigned(mProgress) then
- begin
- Delay(300);
- if mProgress <> nil then
- mProgress.gaProgress.Animate := False;
- FreeAndNil(mProgress);
- end;
- Screen.Cursor := crDefault;
- end;
- procedure TmProgress.shpProgressMouseDown(Sender: TObject;
- Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
- begin
- ReleaseCapture;
- (mProgress as TWinControl).PerForm(wm_SysCommand, sc_DragMove, 0);
- end;
- end.
|