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 @ 2012-11-20 08:23  周黔  阅读(1521)  评论(0编辑  收藏  举报