Problema con Splash Screen in Lazarus app
-
18-09-2019 - |
Domanda
sto porting di un'applicazione Delphi per FPC / Lazarus e Questa applicazione mostra informazioni in splash screen. Quando l'unità ha una sezione di inizializzazione allora questa sezione di inizializzazione chiama qualcosa come:
Splash.Info(unit_name)
Questo funziona in Delphi, ma quando ho compilato questo FPC / Lazarus utilizzando poi mi sono un'eccezione quando creo form con splash screen:
Failed to create win32 control, error 1407 : Cannot find window class
ho scoperto, che le forme possono essere creati dopo Application.Initialize;
è stato chiamato, quindi la mia soluzione è quella di creare la forma iniziale quando ScreenInfo.Initialized=true
. Funziona, ma non mostra tutte le informazioni. C'è un modo per mostrare la forma iniziale dalla sezione inizializzare l'unità, prima di Application.Initialize;
?
Soluzione 2
In SplashScreen codice di inizializzazione che viene chiamata per ogni stringa voglio mostrare su questo schizzo Ho finito con:
...
{$IFDEF FPC}
if not ScreenInfo.Initialized then
exit;
{$ENDIF}
if not splash_inititialized then begin
SplashScreen := TSplashScreen.Create(Application);
splash_inititialized := true;
...
Altri suggerimenti
Apparantly all'attuazione FPC / Lazarus della VCL differisce abbastanza dal Delphi VCL di non consentire l'inizializzazione forma prima che l'oggetto Application è stato inizializzato.
Quindi la cosa migliore che si può fare per farlo funzionare sia in Delphi e FPC / Lazarus è o
- Ritardo l'inizializzazione fino a quando si è sicuri che sia la VCL di Delphi e FPC / Lazarus VCL sono pronti per questo
- Duplica il codice con definisce condizionali per generare implementazioni ottimali sia per Delphi VCL e FPC / Lazarus VCL
- Jeroen