2010-01-05 93 views
3

我正在將一個Delphi應用程序移植到FPC/Lazarus,並且此應用程序在啓動屏幕中顯示信息。當單位有初始化部分則此初始化部分調用是這樣的:Lazarus應用程序中的初始屏幕問題

Splash.Info(unit_name) 

這工作在Delphi中,但是當我編譯這個使用FPC /拉撒路後來我例外,當我創建的形式與閃屏:

Failed to create win32 control, error 1407 : Cannot find window class 

我發現,在調用Application.Initialize;之後可以創建表單,所以我的解決方法是在ScreenInfo.Initialized=true時創建啓動表單。它可以工作,但不會顯示所有信息。有沒有什麼辦法在Application.Initialize;之前從單元初始化部分顯示啓動畫面?

回答

0

在SplashScreen初始化代碼中,我希望在此飛濺上顯示的每個字符串都被調用完畢:

... 
{$IFDEF FPC} 
if not ScreenInfo.Initialized then 
    exit; 
{$ENDIF} 
if not splash_inititialized then begin 
    SplashScreen := TSplashScreen.Create(Application); 
    splash_inititialized := true; 
    ... 
1

顯然,VCL的FPC/Lazarus實現與Delphi VCL的不同之處在於,在Application對象初始化之前不允許表單初始化。

所以,你可以做,使之在Delphi或FPC /拉撒路最好的工作或者是

  • 延遲初始化,直到你確信,無論是德爾福VCL和FPC /拉撒路VCL已經準備好了
  • 重複使用條件定義代碼以產生最佳的實現兩者的Delphi VCL和FPC /拉扎勒斯VCL

--jeroen