Delphiで32bitのアイコンの背景が黒くなってしまう症状

Delphiの過去のプロジェクトをXE2などに移植した場合、32bitの半透明アイコンの背景が黒くなってしまう場合があります。

image

TImageListでcd32Bitを使っているアイコンが、背景が透けずに黒い四角で描画されます。

この症状の解決方法です。

珍しい症状?

意外に珍しい症状のようでインターネットに手がかりがありませんでした。私は2~3回起こったことがあるのですが・・・

プロジェクトを作りなおせば治りますが、非常に大変です。

TImageListを作りなおしたり、メニューを作りなおしたりしても変わりません。

実は・・・

原因はランタイムテーマ

原因はプロジェクトを変換した際にランタイムテーマが未指定になるのが原因です。

マニフェストがおかしくなっているのでしょうね。

プロジェクト > オプション を開きます。

左のツリーから「アプリケーション」を選択。

image

すると「ランタイムテーマ」の部分が「未使用」になっています。

これが原因です。

image

ドロップダウンリストを「ランタイムテーマを有効にする」に変えてOKで閉じます。

そしてリコンパイルすれば・・・

image

見事、元に戻りました。