Problème avec écran Splash dans l'application Lazarus
-
18-09-2019 - |
Question
Je PORTAGE une application Delphi à CCPF / Lazarus et cette application affiche les informations sur l'écran d'accueil. Lorsque l'unité est la section d'initialisation alors cette section d'initialisation appelle quelque chose comme:
Splash.Info(unit_name)
Cela fonctionne à Delphes, mais quand je compilé en utilisant ce CCPF / Lazare puis je me suis exception lorsque je crée sous forme avec l'écran de démarrage:
Failed to create win32 control, error 1407 : Cannot find window class
Je trouve que les formes peuvent être créées après Application.Initialize;
a été appelé, donc ma solution de contournement est de créer sous forme de démarrage lorsque ScreenInfo.Initialized=true
. Il fonctionne, mais ne montre pas toutes les informations. Est-il possible de montrer la forme de démarrage de la section d'initialisation de l'unité, avant Application.Initialize;
?
La solution 2
Dans le code d'initialisation SplashScreen qui est appelée pour chaque chaîne que je veux montrer ce que je fini avec éclaboussures:
...
{$IFDEF FPC}
if not ScreenInfo.Initialized then
exit;
{$ENDIF}
if not splash_inititialized then begin
SplashScreen := TSplashScreen.Create(Application);
splash_inititialized := true;
...
Autres conseils
Apparantly la mise en œuvre de la VCL diffère assez de Delphi VCL pour permettre pas l'initialisation du formulaire CCPF / Lazarus avant que l'objet de l'application a été initialisé.
Donc, la meilleure que vous pouvez faire pour le faire fonctionner dans Delphi et FPC / Lazarus est soit
- Delay l'initialisation jusqu'à ce que vous êtes sûr que les deux VCL Delphi et FPC / Lazarus VCL sont prêts pour cela
- Dupliquer votre code avec pour générer des définitions conditionnelles des implémentations optimales pour les deux VCL Delphi et FPC / Lazarus VCL
- jeroen