123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- unit Setup.UninstallProgressForm;
- {
- Inno Setup
- Copyright (C) 1997-2025 Jordan Russell
- Portions by Martijn Laan
- For conditions of distribution and use, see LICENSE.TXT.
- Uninstaller progress form
- }
- interface
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- Setup.SetupForm, StdCtrls, ExtCtrls, BitmapImage, NewProgressBar, NewStaticText,
- NewNotebook, BidiCtrls;
- type
- TUninstallProgressForm = class(TSetupForm)
- FOuterNotebook: TNewNotebook;
- FInnerPage: TNewNotebookPage;
- FInnerNotebook: TNewNotebook;
- FInstallingPage: TNewNotebookPage;
- FMainPanel: TPanel;
- FPageNameLabel: TNewStaticText;
- FPageDescriptionLabel: TNewStaticText;
- FWizardSmallBitmapImage: TBitmapImage;
- FBevel1: TBevel;
- FStatusLabel: TNewStaticText;
- FProgressBar: TNewProgressBar;
- FBeveledLabel: TNewStaticText;
- FBevel: TBevel;
- FCancelButton: TNewButton;
- protected
- procedure CreateParams(var Params: TCreateParams); override;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure Initialize(const ATitle, AAppName: String; const AModernStyle: Boolean);
- procedure UpdateProgress(const AProgress, ARange: Integer);
- published
- property OuterNotebook: TNewNotebook read FOuterNotebook;
- property InnerPage: TNewNotebookPage read FInnerPage;
- property InnerNotebook: TNewNotebook read FInnerNotebook;
- property InstallingPage: TNewNotebookPage read FInstallingPage;
- property MainPanel: TPanel read FMainPanel;
- property PageNameLabel: TNewStaticText read FPageNameLabel;
- property PageDescriptionLabel: TNewStaticText read FPageDescriptionLabel;
- property WizardSmallBitmapImage: TBitmapImage read FWizardSmallBitmapImage;
- property Bevel1: TBevel read FBevel1;
- property StatusLabel: TNewStaticText read FStatusLabel;
- property ProgressBar: TNewProgressBar read FProgressBar;
- property BeveledLabel: TNewStaticText read FBeveledLabel;
- property Bevel: TBevel read FBevel;
- property CancelButton: TNewButton read FCancelButton;
- end;
- var
- UninstallProgressForm: TUninstallProgressForm;
- implementation
- uses
- TaskbarProgressFunc, Setup.MainForm, SetupLdrAndSetup.Messages,
- Shared.SetupMessageIDs, Shared.CommonFunc.Vcl;
- {$R *.DFM}
- { TUninstallProgressForm }
- procedure UninstallMessageBoxCallback(const Flags: LongInt; const After: Boolean;
- const Param: LongInt);
- const
- States: array [TNewProgressBarState] of TTaskbarProgressState =
- (tpsNormal, tpsError, tpsPaused);
- var
- UninstallProgressForm: TUninstallProgressForm;
- NewState: TNewProgressBarState;
- begin
- UninstallProgressForm := TUninstallProgressForm(Param);
- if After then
- NewState := npbsNormal
- else if (Flags and MB_ICONSTOP) <> 0 then
- NewState := npbsError
- else
- NewState := npbsPaused;
- with UninstallProgressForm.ProgressBar do begin
- State := NewState;
- Invalidate;
- end;
- SetAppTaskbarProgressState(States[NewState]);
- end;
- constructor TUninstallProgressForm.Create(AOwner: TComponent);
- begin
- inherited;
- SetMessageBoxCallbackFunc(UninstallMessageBoxCallback, LongInt(Self));
- InitializeFont;
- MainPanel.ParentBackGround := False;
- PageNameLabel.Font.Style := [fsBold];
- PageNameLabel.Caption := SetupMessages[msgWizardUninstalling];
- if not WizardSmallBitmapImage.InitializeFromIcon(HInstance, 'Z_UNINSTALLICON', MainPanel.Color, [32, 48, 64]) then {don't localize}
- WizardSmallBitmapImage.InitializeFromIcon(HInstance, 'MAINICON', MainPanel.Color, [32, 48, 64]); {don't localize}
- if SetupMessages[msgBeveledLabel] <> '' then begin
- BeveledLabel.Caption := ' ' + SetupMessages[msgBeveledLabel] + ' ';
- BeveledLabel.Visible := True;
- end;
- CancelButton.Caption := SetupMessages[msgButtonCancel];
- end;
- destructor TUninstallProgressForm.Destroy;
- begin
- SetMessageBoxCallbackFunc(nil, 0);
- SetAppTaskbarProgressState(tpsNoProgress);
- inherited;
- end;
- procedure TUninstallProgressForm.Initialize(const ATitle, AAppName: String; const AModernStyle: Boolean);
- begin
- Caption := ATitle;
- PageDescriptionLabel.Caption := FmtSetupMessage1(msgUninstallStatusLabel, AAppName);
- StatusLabel.Caption := FmtSetupMessage1(msgStatusUninstalling, AAppName);
-
- if AModernStyle then begin
- OuterNotebook.Color := clWindow;
- Bevel1.Visible := False;
- end;
- end;
- procedure TUninstallProgressForm.CreateParams(var Params: TCreateParams);
- begin
- inherited;
- Params.WindowClass.style := Params.WindowClass.style or CS_NOCLOSE;
- end;
- procedure TUninstallProgressForm.UpdateProgress(const AProgress, ARange: Integer);
- var
- NewPos: Integer;
- begin
- NewPos := MulDiv(AProgress, ProgressBar.Max, ARange);
- if ProgressBar.Position <> NewPos then begin
- ProgressBar.Position := NewPos;
- SetAppTaskbarProgressValue(NewPos, ProgressBar.Max);
- end;
- end;
- end.
|