不说啥,看效果:
调用代码:
ShowProgress('正在准备提交数据……',0); Sleep(1000); ShowProgress('正在提交第一阶段数据……',20); Sleep(1000); ShowProgress('正在提交第二阶段数据……',50); Sleep(1000); ShowProgress('正在确认提交结果……',75); Sleep(1000); ShowProgress('结果已确认,提交成功。',100); Sleep(1000); HideProgress;
源码:
unit progress; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls; type TfrmProgress = class(TForm) Panel1: TPanel; lblHint: TLabel; Panel2: TPanel; pbProgress: TProgressBar; sbCancel: TSpeedButton; tmDelayShow: TTimer; procedure tmDelayShowTimer(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmProgress: TfrmProgress; procedure ShowProgress(AHint:String;AProgress:Integer); procedure HideProgress; implementation {$R *.fmx} procedure ShowProgress(AHint:String;AProgress:Integer); begin if not Assigned(frmProgress) then frmProgress:=TfrmProgress.Create(Application); frmProgress.lblHint.Text:=AHint; frmProgress.pbProgress.Value:=AProgress; if not frmProgress.Visible then frmProgress.tmDelayShow.Enabled:=True; frmProgress.Invalidate; Application.ProcessMessages; end; procedure HideProgress; begin if Assigned(frmProgress) then frmProgress.Hide; end; procedure TfrmProgress.tmDelayShowTimer(Sender: TObject); begin tmDelayShow.Enabled:=False; frmProgress.Show; end; end.
窗体定义:
object frmProgress: TfrmProgress Left = 0 Top = 0 BorderStyle = None ClientHeight = 480 ClientWidth = 351 Fill.Color = x80000000 Fill.Kind = Solid Position = ScreenCenter Transparency = True Visible = True FormFactor.Width = 320 FormFactor.Height = 480 FormFactor.Devices = [Desktop] DesignerMasterStyle = 3 object Panel1: TPanel Align = Center Size.Width = 297.000000000000000000 Size.Height = 141.000000000000000000 Size.PlatformDefault = False TabOrder = 0 object lblHint: TLabel Align = Client Margins.Left = 5.000000000000000000 Margins.Top = 5.000000000000000000 Margins.Right = 5.000000000000000000 Margins.Bottom = 5.000000000000000000 Size.Width = 287.000000000000000000 Size.Height = 46.000000000000000000 Size.PlatformDefault = False TextSettings.VertAlign = Trailing Text = #27491#22312#25191#34892#25805#20316#65292#35831#31245#20505#8230#8230 end object Panel2: TPanel Align = Bottom Padding.Top = 5.000000000000000000 Position.Y = 56.000000000000000000 Size.Width = 297.000000000000000000 Size.Height = 85.000000000000000000 Size.PlatformDefault = False TabOrder = 1 object pbProgress: TProgressBar Align = Top Orientation = Horizontal Margins.Left = 5.000000000000000000 Margins.Right = 5.000000000000000000 Position.X = 5.000000000000000000 Position.Y = 5.000000000000000000 Size.Width = 287.000000000000000000 Size.Height = 10.000000000000000000 Size.PlatformDefault = False end object sbCancel: TSpeedButton Align = Center ModalResult = 2 Size.Width = 48.000000000000000000 Size.Height = 48.000000000000000000 Size.PlatformDefault = False StyleLookup = 'stoptoolbutton' Text = #21462#28040 end end end object tmDelayShow: TTimer Enabled = False Interval = 500 OnTimer = tmDelayShowTimer Left = 184 Top = 88 end end