2013-03-22 6 views
7

リソースとして私のプロジェクトにいくつかのアイコンを追加する必要がありました(この場合、TCoolTrayIconのバグのためにTImageListを使用することはできず、コンポーネントをすばやく置き換えることはできません)。プロジェクトに.resファイルを追加すると、デフォルトのアイコンが置き換えられます。

私はDelphiのリソースファイルに2つのICOファイルを追加しicons.rcスクリプトを作成しました:

redicon ICON "c:\icon\red.ico" 
greenicon ICON "c:\icon\green.ico" 

それはicons.resに罰金コンパイルので、私は私の最初のユニットに追加Delphi 7のプロジェクト:

{$R icons.res} 

が、私は(OnCreate関数でハンドルを保存)のMainFormの:

hRedIcon := LoadIcon(hInstance,'redicon'); 
hGreenIcon := LoadIcon(hInstance,'greenicon'); 

してから使用ハンドルは問題ありません。

これで、プロジェクトオプション(16x16から48x48のサイズ)で追加されたプロジェクトアイコンが、{$ Rアイコンで追加した最初のアイコン(16x16 redicon)に置き換えられました。 res}。

これを防止するにはどうすればよいですか?プロジェクトオプション - >アプリケーション - >アイコンの読み込みで追加されたアイコンを置き換えずに、リソースとしてプロジェクトに追加のアイコンを追加する方法

+0

.dprコードを表示してください。 – whosrdaddy

+0

私は、自分が管理しているリソースファイルに常にメインアイコンを含めます。 –

+0

別のDLLに含めることができますか? "リソースDLL"はかなり頻繁に使用されます –

答えて

7

VCLによって、アプリケーションのアイコンの名前'MAINICON'がハードコードされます。これはTApplication.Createのコードで見ることができます。

一方
FIcon.Handle := LoadIcon(MainInstance, 'MAINICON'); 

、シェルは実行可能ファイルの最初のアイコンは、メインアプリケーションのアイコンであることを前提としています。シェルが使用する順序は、アイコン名のアルファベット順です。

この結果、すべてのアイコンにMAINICONの後ろにアルファベットの名前が表示されます。

関連する問題