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