外部マニフェストファイルを使用しつつ、IDE上でもランタイムテーマを使用するには?

解決


TK  2013-03-15 19:11:51  No: 44038

Delphi2010 Proを使用しているTKです。

外部マニフェストファイルを使用しようしたいのですが、Delphi2010ではIDEオプションの「ランタイムテーマを有効にする」をOFFにしなければ外部マニフェストが適応されません。
※外部マニフェストはVista互換モードを削除する為に使用

しかしIDEオプションの「ランタイムテーマを有効にする」をOFFにするとIDE開発時のボタン等がクラシックスタイルになってしまいます。

「Vista互換モードを削除」し且つ「IDE開発時のボタンをルナスタイルにする」というのはDelphi2010で可能なのでしょうか?

回避方法をお持ちの方が居られましたら、お手数ですが教えてください。

以上、よろしくお願いいたします。


DEKO  2013-03-15 20:49:47  No: 44039

こんにちは。

デバッグビルドでは "ランタイムテーマを有効にする" をオンにして、
IDE 設計時にもランタイム有効で設計し、
リリースビルドでは "ランタイムテーマを有効にする" をオフにすればいいのではないかと思います。

外部マニフェストではなく内部マニフェスト(カスタム)ならば、上記対応を行った上で、

{$IFDEF RELEASE}
{$R 'AppName.exe.manifest.res'}
{$ENDIF}

のように、リリースビルドの時のみ
カスタムマニフェストリソースを埋め込むようにすればいいかと思います。

一番簡単なのは 

・WindowsXP.res をバックアップ
・WindowsXP.res に ネイティブモードの記述を追加
・TXPManifest をフォームに貼る
・"ランタイムテーマを有効にする" オフ

ってやる事ですかね。

"ランタイムテーマを有効にする" オンと TXPManifest を同時には使えませので、
(使うとマニフェストリソースが 2 つ登録される)
TXPManifest はネイティブモード用に使うようにすればいいのではないでしょうか?

[アプリケーションマニフェスト (Delphi VCL Tips)]
http://ht-deko.minim.ne.jp/tech077.html


DEKO  2013-03-15 21:17:57  No: 44040

Delphi 7 〜 XE なら、WindowsXP.res を目的に合わせて複数用意しておいて、
$(BDS)\lib へコピーするバッチファイルを作って実行すればよろしいかと。

2007 以降なら [ビルドイベント] にバッチファイルを指定して、
ビルド前にバッチファイルを走らせる事ができます。 

Ex.
cmd /c manifestcopy.cmd


TK  2013-03-16 06:35:16  No: 44041

DEKOさんお返事ありがとうございます。

今日は忙しくて確認が出来ないので、明日教えて頂いた内容を実行してみて、結果を報告させて頂きたいと思います。


TK  2013-03-19 02:30:31  No: 44042

DEKOさん、お返事が遅くなり申し訳ありません。

1.WindowsXP.resを改変したものをexe直下に用意
2.dprに{$R 'WindowsXP.res'}を追加

以上の対応で希望の動作が実現できました。

対応ありがとうございました。


TK  2013-03-19 02:31:02  No: 44043

解決をチェックし忘れておりました。


DEKO  2013-03-19 03:23:26  No: 44044

> 1.WindowsXP.resを改変したものをexe直下に用意
> 2.dprに{$R 'WindowsXP.res'}を追加

ぬ。そういう事であれば、"Manifest Ex" を使うと楽ですよ。
視覚的に何を使っているのか判り易いです。

[Manifest Ex]
http://ht-deko.minim.ne.jp/ft1303.html#130316_01


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加