Frage

Ich porte eine Delphi -Anwendung auf FPC/Lazarus und diese Anwendung zeigt Informationen im Splash -Bildschirm an. Wenn der Abschnitt "Initialisierungsabschnitt" hat, ruft dieser Initialisierungsabschnitt so etwas wie:

Splash.Info(unit_name)

Dies funktioniert in Delphi, aber als ich dies mit FPC/Lazarus zusammengestellt habe, habe ich eine Ausnahme erhalten, wenn ich Form mit dem Spankebildschirm erstelle:

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

Ich fand, dass Formen danach erstellt werden können Application.Initialize; wurde gerufen, also meine Problemumgehung ist es, Splash -Form zu erstellen, wenn ScreenInfo.Initialized=true. Es funktioniert, zeigt aber nicht alle Informationen. Gibt es eine Möglichkeit, vor dem Abschnitt "Einheiteninitialisierung" Spritzform zu zeigen? Application.Initialize;?

War es hilfreich?

Lösung 2

In Splashscreen -Initialisierungscode, der für jede Zeichenfolge gefordert wird, die ich auf diesem Spritzer zeigen möchte, mit dem ich fertig war:

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

Andere Tipps

Anscheinend unterscheidet sich die Implementierung von FPC/Lazarus der VCL von der Delphi -VCL so, dass sie die Forminitialisierung nicht zulässt, bevor das Anwendungsobjekt initialisiert wurde.

Das Beste, was Sie tun können, damit es sowohl in Delphi als auch in FPC/Lazarus funktioniert

  • Verzögern Sie die Initialisierung, bis Sie sicher sind, dass sowohl die Delphi VCL als auch der FPC/Lazarus VCL bereit sind
  • Duplizieren Sie Ihren Code mit bedingten Definieren, um optimale Implementierungen für Delphi VCL und FPC/Lazarus VCL zu generieren

-Jeroen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top