unit DShowAudioVolume; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.StdCtrls, Vcl.ExtCtrls; type TDlgShowAudioVolume = class(TForm) pgVol: TProgressBar; lbVol: TLabel; tHide: TTimer; procedure tHideTimer(Sender: TObject); private { Private declarations } public { Public declarations } Constructor Create(aOwner: TComponent); override; Destructor Destroy; override; procedure SetVolume(nVol: Integer); end; var DlgShowAudioVolume: TDlgShowAudioVolume; implementation {$R *.dfm} const SHOW_MILISECOND = 3000; var _nShowTime: Integer = 0; Constructor TDlgShowAudioVolume.Create(aOwner: TComponent); begin Inherited Create(aOwner); end; Destructor TDlgShowAudioVolume.Destroy; begin Inherited; end; procedure TDlgShowAudioVolume.SetVolume(nVol: Integer); begin _nShowTime := 0; pgVol.Position := nVol; lbVol.Caption := Format('%d%%', [nVol]); Show; Application.ProcessMessages; end; procedure TDlgShowAudioVolume.tHideTimer(Sender: TObject); begin if Showing then begin Inc(_nShowTime, 100); if _nShowTime = SHOW_MILISECOND then Hide; end; end; end.