3

我正在将一个 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;

4

2 回答 2

1

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

因此,要使其在 Delphi 和 FPC/Lazarus 中运行,您可以做的最好的事情是

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

——杰伦

于 2010-01-06T10:07:23.407 回答
0

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

...
{$IFDEF FPC}
if not ScreenInfo.Initialized then
    exit;
{$ENDIF}
if not splash_inititialized then begin
  SplashScreen := TSplashScreen.Create(Application);
  splash_inititialized := true;
  ...
于 2010-01-11T06:06:16.920 回答