私はコンポーネントパッケージを開発しており、良いコンポーネントパッケージ(TMS、CnPackなど)のように、Delphi XEのスプラッシュにアイコンとそのライセンス情報を表示したいと考えています。Delphi Splash Screenのアイコンと情報が初めて表示されるのはなぜですか?
実際、私はOTAを通じてこれをやっていますが、不思議なことに、最初のコンパイルとインストールの直後にのみ、これらのことがスプラッシュ画面に表示されます。 Delphiを閉じてもう一度開くと、何も表示されません。
これは私のコードからの抜粋です。
unit Wizards.Information;
interface
implementation
{$R *.res}
uses
ToolsAPI, Windows, Graphics, SysUtils;
const
ICON_SPLASH = 'SPLASHICON';
ICON_ABOUT = 'ABOUTICON';
var
AboutBoxServices: IOTAAboutBoxServices = nil;
AboutBoxIndex: Integer = 0;
resourcestring
resPackageName = 'Delphi Framework v1.0';
resLicense = 'Mozilla Public License 1.1';
resAboutCopyright = 'Copyright My Company Ltd.';
resAboutTitle = 'Delphi Framework';
resAboutDescription = 'Good description here ;)';
procedure RegisterSplashScreen;
var
bmp: TBitmap;
begin
bmp := TBitmap.Create;
try
bmp.LoadFromResourceName(HInstance, ICON_SPLASH);
SplashScreenServices.AddPluginBitmap(resPackageName, bmp.Handle, False, resLicense);
finally
bmp.Free;
end;
end;
procedure RegisterAboutBox;
var
ProductImage: HBITMAP;
begin
Supports(BorlandIDEServices,IOTAAboutBoxServices, AboutBoxServices);
ProductImage := LoadBitmap(FindResourceHInstance(HInstance), ICON_ABOUT);
AboutBoxIndex := AboutBoxServices.AddPluginInfo(resPackageName, resAboutCopyright + #13#10#13#10 + resAboutDescription, ProductImage, False, resLicense);
end;
procedure UnregisterAboutBox;
begin
if (AboutBoxIndex <> 0) and Assigned(AboutBoxServices) then
begin
AboutBoxServices.RemovePluginInfo(AboutBoxIndex);
AboutBoxIndex := 0;
AboutBoxServices := nil;
end;
end;
initialization
RegisterSplashScreen;
RegisterAboutBox;
finalization
UnRegisterAboutBox;
end.
あなたは私は、Delphi XEのボックスについても、中にいくつかの情報を表示しようとしている、と私は立ち上がっていますが、この情報は、同じ問題が、残念ながらスプラッシュスクリーンで起こっ苦しむ見ることができるように。
どういうところが間違っていますか?
ヒントは大歓迎です!事前に
おかげ
質問が回答されており、すべてが今動作しているようだが、他の考慮事項は大歓迎ですが、私は意味、ForceDemandLoadState(dlDisable)
の使用から、他の回答diferentは大歓迎です!
こんにちは!これは両方の登録手続きで行う必要がありますか?私が試してみます。ありがとうございました! –
解決策は動作しますが、これは「回避策」の一種のようです。これは私の問題の修正のより良い形ですか?もう少し説明できますか? –
私はリポジトリウィザードに表示された3つの特別なフォームを持つウィザードを作っています。スプラッシュ画面のアイコンが表示されていない場合でも、私のウィザードはまだ動作していますが、これは問題があると思いますが、修正可能な問題です。この回避策を使用する必要がありますか? –