7

リソースとしてプロジェクトにいくつかのアイコンを追加する必要がありました (この場合、TCoolTrayIcon のバグのため TImageList を使用できず、コンポーネントをすぐに置き換えることもできません)。

2 つの ico ファイルを Delphi リソース ファイルに追加するための icons.rc スクリプトを作成しました。

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

それは icons.res に問題なくコンパイルされるので、Delphi 7 プロジェクトの最初のユニットに追加します。

{$R icons.res}

次に、ハンドルを MainForm の OnCreate() に格納します。

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

そして、ハンドルをうまく使います。

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

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

4

1 に答える 1

7

'MAINICON'VCLは、アプリケーションのアイコンの名前をハード コードします。これは、次のコードで確認できますTApplication.Create

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

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

この結果、すべてのアイコンに、アルファベットで MANICON の後に表示される名前が必要になります。

于 2013-03-22T09:11:09.113 に答える