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.

  

你可能感兴趣的:(Delphi)