拉撒路应用程序中的启动画面问题

时间:2010-01-05 09:41:17

标签: delphi forms lazarus freepascal fpc

我正在将一个Delphi应用程序移植到FPC / Lazarus,此应用程序在启动画面中显示信息。当单元具有初始化部分时,则此初始化部分调用类似:

Splash.Info(unit_name)

这在Delphi中有效,但是当我使用FPC / Lazarus编译它时,当我使用启动画面创建表单时,我遇到异常:

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

我发现,可以在调用Application.Initialize;后创建表单,因此我的解决方法是在ScreenInfo.Initialized=true时创建表单。它有效,但没有显示所有信息。有没有办法在Application.Initialize;

之前显示单位初始化部分的初始形式

2 个答案:

答案 0 :(得分:1)

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

所以你可以做的最好的方法是让它在Delphi和FPC / Lazarus中运行

  • 延迟初始化,直到您确定Delphi VCL和FPC / Lazarus VCL都已为此做好准备
  • 使用条件定义复制代码,为Delphi VCL和FPC / Lazarus VCL生成最佳实现

- 的Jeroen

答案 1 :(得分:0)

在SplashScreen初始化代码中,为我想要在这个启动画面上显示的每个字符串调用,我完成了:

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