delphi之完美Splash方案


本文整理自网络,侵删。

 
前言:网上有很多介绍delphi创建闪屏的代码,大多只是在程序开启前显示一个闪屏,但是却没有说如何在闪屏上显示程序加载的进度,于是笔者有意思介绍一下这种闪屏方式。

1.创建一个窗体(TfrmSplash),放入一个TImageBox,加载一幅图片,调整好TImageBox与图片的大小,然后在其上放入一个TLabel,name=LblStatus,用于显示加载进度文字。然后将TfrmSplash设置为不自动创建。

2.加入如下代码(代码很简单,就不用解释太多)

unit UntFormSplash;  
  
interface  
  
uses  
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  Dialogs, ExtCtrls, StdCtrls;  
  
type  
  TfrmSplash = class(TForm)  
    Image1: TImage;  
    LblStatus: TLabel;  
  private  
    { Private declarations }  
    FParam:Pointer;  
  public  
    { Public declarations }  
    class function Execute(AParam:Pointer):Boolean;  
    procedure SetStatusText(Value: string);  
  published  
    property StatusText : string write SetStatusText;  
  end;  
  
var  
  SplashForm: TfrmSplash;  
  
implementation  
  
{$R *.dfm}  
  
{ TfrmSplash }  
  
class function TfrmSplash.Execute(AParam:Pointer): Boolean;  
begin  
  with TfrmSplash.Create(nil) do  
  try  
    FParam := AParam;  
    Result := ShowModal = mrOk;  
  finally  
    Free;  
  end;  
end;  
  
procedure TfrmSplash.SetStatusText(Value: string);  
begin  
  LblStatus.Caption := Value;  
  Update;  //这句非常重要,不加的话,界面会阻塞,文字也就不会更新显示  
  Sleep(1000); //这句根据自己实际情况来调整,主要是怕闪屏太快关闭,达不到效果  
end;  
  
  
end.  
 

3. 在项目的.dpr文件中加入如下代码:

 

Delphi代码  
begin  
  
  Application.Initialize;  
  
  SplashForm := TfrmSplash.Create(Application);  
  SplashForm.Show;  
  SplashForm.Update;  
  
  SplashForm.StatusText := '准备启动...';  
  SplashForm.Update;  
    
  Application.CreateForm(TDM, DM);  
  Application.CreateForm(TfrmMain, frmMain);  
    
  SplashForm.Hide;  
  SplashForm.Free;  
  
  Application.Run;  
end.  
 

 

 

4.这一步就是主窗体加载数据的时候,边加载边更新闪屏的进度文字了:

 

Delphi代码  
procedure TfrmMain.FormCreate(Sender: TObject);  
begin  
  
  with SplashForm do  
  try  
    StatusText := ('开始初始化内存...');  
    FCacheHash := TStringHashMap.Create(CaseInsensitiveTraits, 255);  
    FCurrentClients := TList.Create;  
    //VST.NodeDataSize := SizeOf(TTagCustomListItem);  
    //VST.RootNodeCount := 2;  
    VST.NodeDataSize := SizeOf(TMyTreeNodeDate);  
    StatusText :=('初始化内存完成');  
  
    StatusText :=('开始加载客户端列表...');  
    BuildGroupTree;  
    StatusText :=('加载客户端列表完成');  
  
    StatusText :=('开始加载分组信息...');  
    AddELVDefaultGroup;  
    StatusText :=('开始初始化内存');  
  
    StatusText :=('开始初始化数据...');  
    G_DefNetImpl := TDefNetImpl.Create();  
    G_DefNetImpl.RegisterObserver(Self);  
    StatusText :=('全部数据加载完毕,程序即将启动...');  
  
  finally  
  
  end;  
  
  
end;  

来源:https://www.cnblogs.com/plug/p/4557173.html
 

相关阅读 >>

Delphi stringgrid 实例4 本例功能: 1、给每个单元格赋值 2、调整当前单元格位置:上下左右;

Delphi利用系统时间产生随机数的函数

Delphi 中使用微软全文翻译的小例子

Delphi 内存流方式获取页面验证码图片

Delphi 获取网卡mac代码可用2020.01.22

Delphi byte类型算术运算

Delphi 取得ie下面输入框内容

Delphi 实现如何枚举所有打开的ie选项卡

Delphi 对gzip解压

Delphi 利用thttpclient实现http异步下载

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...