Lazarus应用程序中的初始屏幕问题

问题描述:

我正在将一个Delphi应用程序移植到FPC/Lazarus,并且此应用程序在启动屏幕中显示信息。当单位有初始化部分则此初始化部分调用是这样的:Lazarus应用程序中的初始屏幕问题

Splash.Info(unit_name) 

这工作在Delphi中,但是当我编译这个使用FPC /拉撒路后来我例外,当我创建的形式与闪屏:

Failed to create win32 control, error 1407 : Cannot find window class 

我发现,在调用Application.Initialize;之后可以创建表单,所以我的解决方法是在ScreenInfo.Initialized=true时创建启动表单。它可以工作,但不会显示所有信息。有没有什么办法在Application.Initialize;之前从单元初始化部分显示启动画面?

在SplashScreen初始化代码中,我希望在此飞溅上显示的每个字符串都被调用完毕:

... 
{$IFDEF FPC} 
if not ScreenInfo.Initialized then 
    exit; 
{$ENDIF} 
if not splash_inititialized then begin 
    SplashScreen := TSplashScreen.Create(Application); 
    splash_inititialized := true; 
    ... 

显然,VCL的FPC/Lazarus实现与Delphi VCL的不同之处在于,在Application对象初始化之前不允许表单初始化。

所以,你可以做,使之在Delphi或FPC /拉撒路最好的工作或者是

  • 延迟初始化,直到你确信,无论是德尔福VCL和FPC /拉撒路VCL已经准备好了
  • 重复使用条件定义代码以产生最佳的实现两者的Delphi VCL和FPC /拉扎勒斯VCL

--jeroen