Problem mit dem Begrüßungsbildschirm in der Lazarus -App
-
18-09-2019 - |
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;
?
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