Lazarus应用中的飞溅屏幕问题
-
18-09-2019 - |
题
我正在将Delphi应用程序移植到FPC/Lazarus,此应用程序显示了Splash屏幕中的信息。当单元具有初始化部分时,此初始化部分称为以下内容:
Splash.Info(unit_name)
这在Delphi中起作用,但是当我使用FPC/Lazarus对此进行编译时,当我使用Splash屏幕创建表单时,我会得到异常:
Failed to create win32 control, error 1407 : Cannot find window class
我发现,可以在 Application.Initialize;
被称为,所以我的解决方法是在 ScreenInfo.Initialized=true
. 。它有效,但没有显示所有信息。是否有任何方法可以从单位初始化部分显示飞溅形式 Application.Initialize;
?
解决方案 2
在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有足够的不同,在初始化应用程序对象之前不允许形式初始化。
因此,您可以做的最好的方法使其在Delphi和FPC/Lazarus中都可以使用
- 延迟初始化,直到您确定Delphi VCL和FPC/Lazarus VCL都准备好了
- 用条件定义复制代码以生成Delphi VCL和FPC/Lazarus VCL的最佳实现
- 杰罗恩
不隶属于 StackOverflow