123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- unit ProgressHintFrm;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, Gauges, StdCtrls, ExtCtrls, Math;
- type
- TProgressHintForm = class(TForm)
- Shape: TShape;
- gProgress: TGauge;
- gSubProgress: TGauge;
- lblProgressHint: TLabel;
- lblSubProgressHint: TLabel;
- lblMainHint: TLabel;
- lblPrecent: TLabel;
- lblSubPrecent: TLabel;
- private
- FHintProgress: Boolean;
- FHasSubProgress: Boolean;
- procedure InitForm;
- public
- constructor Create(AHintProgress, AHasSubProgress: Boolean);
- destructor Destroy; override;
- end;
- var
- ProgressHintForm: TProgressHintForm;
- procedure ShowProgressHint(const AHint: string; AMaxValue: Integer = 0;
- const ASubHint: string = ''; ASubMaxValue: Integer = 0);
- procedure UpdateProgressMaxValue(AMaxValue: Integer; AIsSub: Boolean = False);
- procedure UpdateProgressPosition(APos: Integer; ASubPos: Integer = 0); overload;
- procedure UpdateProgressPosition(AIsSub: Boolean = False); overload;
- procedure UpdateProgressHint(const AHint: string; AIsSub: Boolean = False); overload;
- procedure UpdateProgressHint(APos: Integer; AIsSub: Boolean = False); overload;
- procedure CloseProgressHint;
- implementation
- {$R *.dfm}
- procedure ShowProgressHint(const AHint: string; AMaxValue: Integer = 0;
- const ASubHint: string = ''; ASubMaxValue: Integer = 0);
- begin
- ProgressHintForm := TProgressHintForm.Create(AMaxValue <> 0, ASubMaxValue <> 0);
- ProgressHintForm.lblProgressHint.Caption := AHint;
- ProgressHintForm.gProgress.MaxValue := AMaxValue;
- ProgressHintForm.lblSubProgressHint.Caption := ASubHint;
- ProgressHintForm.gSubProgress.MaxValue := ASubMaxValue;
- ProgressHintForm.Show;
- end;
- procedure UpdateProgressMaxValue(AMaxValue: Integer; AIsSub: Boolean = False);
- begin
- if AIsSub then
- ProgressHintForm.gSubProgress.MaxValue := AMaxValue
- else
- ProgressHintForm.gProgress.MaxValue := aMaxValue;
- ProgressHintForm.Update;
- end;
- procedure UpdateProgressPosition(APos: Integer; ASubPos: Integer = 0);
- begin
- with ProgressHintForm do
- begin
- gSubProgress.Progress := ASubPos;
- lblSubPrecent.Caption := Format('%3d', [gSubProgress.PercentDone])+'%';
- gProgress.Progress := APos;
- lblPrecent.Caption := Format('%3d', [gProgress.PercentDone])+'%';
- Update;
- end;
- end;
- procedure UpdateProgressPosition(AIsSub: Boolean = False);
- begin
- with ProgressHintForm do
- begin
- if AIsSub then
- begin
- gSubProgress.Progress := Min(gSubProgress.Progress + 1, gSubProgress.MaxValue);
- lblSubPrecent.Caption := Format('%3d', [gSubProgress.PercentDone])+'%'
- end
- else
- begin
- gProgress.Progress := Min(gProgress.Progress + 1, gProgress.MaxValue);
- lblPrecent.Caption := Format('%3d', [gProgress.PercentDone])+'%';
- end;
- Update;
- end;
- end;
- procedure UpdateProgressHint(const AHint: string; AIsSub: Boolean = False);
- begin
- if AIsSub then
- ProgressHintForm.lblSubProgressHint.Caption := AHint
- else
- ProgressHintForm.lblProgressHint.Caption := AHint;
- ProgressHintForm.Update;
- end;
- procedure UpdateProgressHint(APos: Integer; AIsSub: Boolean = False);
- begin
- with ProgressHintForm do
- if AIsSub then
- begin
- gSubProgress.Progress := gSubProgress.Progress + APos;
- if gSubProgress.Progress > gSubProgress.MaxValue then
- gSubProgress.Progress := 0;
- lblSubPrecent.Caption := Format('%3d', [gSubProgress.PercentDone])+'%';
- end
- else
- begin
- gProgress.Progress := gProgress.Progress + APos;
- lblPrecent.Caption := Format('%3d', [gProgress.PercentDone])+'%';
- end;
- ProgressHintForm.Update;
- end;
- procedure CloseProgressHint;
- begin
- FreeAndNil(ProgressHintForm);
- end;
- { TProgressHintForm }
- constructor TProgressHintForm.Create(AHintProgress, AHasSubProgress: Boolean);
- begin
- inherited Create(nil);
- FHintProgress := AHintProgress;
- FHasSubProgress := AHasSubProgress;
- InitForm;
- end;
- destructor TProgressHintForm.Destroy;
- begin
- inherited;
- end;
- procedure TProgressHintForm.InitForm;
- begin
- if not FHintProgress then
- Height := 48
- else if FHasSubProgress then
- Height := 106
- else
- Height := 66;
- lblPrecent.Visible := FHintProgress;
- gProgress.Visible := FHintProgress;
- lblSubProgressHint.Visible := FHasSubProgress;
- lblSubPrecent.Visible := FHasSubProgress;
- gSubProgress.Visible := FHasSubProgress;
- end;
- end.
|