문제

Delphi 응용 프로그램을 FPC/Lazarus로 포팅하고 있으며이 응용 프로그램은 Splash 화면에 정보를 보여줍니다. 단위는 초기화 섹션이 있으면이 초기화 섹션은 다음과 같은 것을 호출합니다.

Splash.Info(unit_name)

이것은 Delphi에서 작동하지만 FPC/Lazarus를 사용하여 이것을 컴파일했을 때 Splash 화면으로 양식을 만들 때 예외를 얻었습니다.

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

나는 그 형태가 후에 만들 수 있음을 발견했다 Application.Initialize; 내 해결 방법은 스플래시 양식을 작성하는 것입니다. ScreenInfo.Initialized=true. 작동하지만 모든 정보를 표시하는 것은 아닙니다. 이전에 단위 초기화 섹션에서 스플래시 양식을 표시하는 방법이 있습니까? Application.Initialize;?

도움이 되었습니까?

해결책 2

이 스플래시에서 보여주고 싶은 모든 문자열에 대해 호출되는 SplashScreen 초기화 코드에서 다음과 같이 완성했습니다.

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

다른 팁

VCL의 FPC/Lazarus 구현은 응용 프로그램 객체가 초기화되기 전에 양식 초기화를 허용하지 않도록 Delphi VCL과 충분히 다릅니다.

그래서 델파이와 FPC/Lazarus에서 작동하도록하기 위해 최선을 다하는 최선은

  • Delphi VCL과 FPC/Lazarus VCL이 모두 준비되어있을 때까지 초기화를 지연시킵니다.
  • Delphi VCL 및 FPC/Lazarus VCL 모두에 대한 최적의 구현을 생성하기 위해 조건부 정의로 코드를 복제하십시오.

-jeroen

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top