DELPHI (VCL及FMX[Firemonkey])启动时的欢迎窗口实现代码

VCL里面的的实现

program ZhouFamily;
 
uses
  Vcl.Forms,
  Winapi.Windows,
  FrmZhouFamilyMainU in 'FrmZhouFamilyMainU.pas' {FrmZhouFamilyMain} ,
  SplashFormU in 'SplashFormU.pas' {SplashForm} ,
  DmU in 'DmU.pas' {DM: TDataModule};
 
var
  Timestart, timeend: dword;
 
begin
 
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  SplashForm := TSplashForm.Create(Application);
  SplashForm.Show;
  SplashForm.Update;
  Timestart := gettickcount;
  Application.CreateForm(TDM, DM); // 数据模块加载
  Application.CreateForm(TFrmZhouFamilyMain, FrmZhouFamilyMain); // 主窗口加载
  timeend := gettickcount;
  if timeend - Timestart < 1000 then
  begin
    sleep(1000 - (timeend - Timestart));
  end;
  SplashForm.Hide;
  SplashForm.Free;
  Application.Run;
 
end.

  

 

 

 

FMX里面的实现,很不完美,只是为了闪屏而闪屏,因为form的create 事件是在  Application.Run;后才执行的,如果哪位兄弟有好的改进版本,期待能通知下我!

program ZhouFamily;
 
uses
  FMX.Forms,
  System.SysUtils,
  FrmZhouFamilyMainU in 'FrmZhouFamilyMainU.pas' {FrmZhouFamilyMain} ,
  SplashFormU in 'SplashFormU.pas' {SplashForm} ,
  DmU in 'DmU.pas' {DM: TDataModule};
 
{$R *.res}
 
var
  Timestart, timeend: Tdatetime;
 
begin
  Application.Initialize;
  SplashForm := TSplashForm.Create(nil);
  Timestart := gettime;
  Application.ProcessMessages;
  Application.CreateForm(TDM, DM);
  Application.CreateForm(TFrmZhouFamilyMain, FrmZhouFamilyMain);
  Application.ProcessMessages;
  timeend := gettime;
  if timeend - Timestart < 1000 then
  begin
    sleep(1000 - trunc(timeend - Timestart));
  end;
  SplashForm.Hide;
  SplashForm.Free;
  Application.Run;
 
end.

  

posted @   周黔  阅读(1544)  评论(0编辑  收藏  举报
编辑推荐:
· 在.NET Core中使用异步多线程高效率的处理大量数据
· 聊一聊 C#前台线程 如何阻塞程序退出
· 几种数据库优化技巧
· 聊一聊坑人的 C# MySql.Data SDK
· 使用 .NET Core 实现一个自定义日志记录器
阅读排行:
· 字节豆包,来园广告
· 为什么推荐在 .NET 中使用 YAML 配置文件
· 在 .NET Core 中使用 Channel 实现生产者消费者模式
· 干掉EasyExcel!FastExcel初体验
· .NET 阻止系统睡眠/息屏
点击右上角即可分享
微信分享提示