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

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top