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;?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top