代码之家  ›  专栏  ›  技术社区  ›  Michał Niklas

Lazarus应用程序中的启动屏幕出现问题

  •  3
  • Michał Niklas  · 技术社区  · 15 年前

    我正在将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 . 它工作,但不显示所有信息。是否有任何方法显示单元初始化部分的启动窗体 应用程序。初始化; ?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Jeroen Wiert Pluimers    15 年前

    显然,VCL的fpc/lazarus实现与Delphi VCL的差异非常大,以至于在初始化应用程序对象之前不允许窗体初始化。

    因此,在Delphi和FPC/Lazarus中,最好的方法是

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

    ——杰罗恩

        2
  •  0
  •   Michał Niklas    15 年前

    在SplashScreen初始化代码中,调用了我想在这个SplashScreen上显示的每个字符串:

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