3

レガシーアプリケーション(32ビットのWinXPでDelphi 6で作成され、最近64ビットのWin7でDelphi XE2に移植された)では、標準のコントロールは「モダン」に見え、カラーグラデーションなどがあります。 、古いWin95バージョンと同じように見えます。

特に、TPageControlとTTabControlのデフォルトの色によって、現在どのタブが選択されているかを判断するのがそれほど難しくない場合は、それほど気になりません。

だから私の質問は:

  1. 実行時にテーマがアクティブにならない原因は何ですか?
  2. 設計時間を実行時のように簡単に(たとえばIDE構成を介して)作成することは可能ですか?

ノート:

  • プロジェクトオプションで、既存のターゲットごとにランタイムテーマを有効にしました。それは役に立たなかった。
  • また、これらのコントロールを含むフォームでGlassFrameを有効にしようとしました。残念ながら、ランタイムのルックアンドフィールはテーマに沿っていませんでした。
  • このアプリケーションは、私が習得していない多くの社内外のコード(巨人の肩の上に立っている小人)に基づいて構築されていますが、そのソースは私が利用できます。アプリケーションの起動時に何らかの命令でテーマが無効になるのではないかと思い、自分で解決したい「Theme」「Skin」「TStyleManager」「SetWindowTheme」などのキーワードを探しました。私は(少なくとも私にとって)重要なものを見つけることができませんでした。
  • 質問DelphiXE2VCLスタイルチュートリアル(実行時にスタイルを変更する方法)の情報を使用して、小さなアプリケーションをテストとしてスキンしようとしましたが、 完全に機能しました。
  • アプリケーションのスキニングは私の目標ではありません。設計時にいくつかのGUI要素を視覚的に調整できるようにしたいと思います。設計と実行時間が同じように見えると、より簡単になります。
4

2 に答える 2

6

dpr ファイルの "{$R *.res}" という行を削除すると、テーマが利用できなくなったことが判明しました。

D6 では、プロジェクトのバージョン情報を無効にし、"{$R *.res}" を "{$R 'myApp.res' 'myApp.rc'}" に置き換えて、独自の rc ファイルを使用してバージョン情報を取得しました。別の簡単に編集できるファイルで、プロジェクト オプションを強制的に実行する必要はありません。

XE2 では、ビルド中に Delphi によってリソースが頻繁に上書きされる (または考慮されない、よくわかりません) ため、これは機能しなくなりました。アプリケーション名と一致しないように rc ファイルの名前を変更する必要があったため、"{$R ' myApp .res' ' myApp .rc'}" を "{$R ' myApp_rc .res' ' myApp_rc .rc'に置き換えました。 }」。

"{$R *.res}" を ("{$R 'myApp.res' 'myApp.rc'}" と共に) 再度配置すると、テーマが正しくなり、バージョン情報が壊れないようです。

良い方向に向けてくれてありがとう、ブライアン。

于 2012-06-27T08:50:01.050 に答える
1

私の経験では、これは多くの場合、DEBUGモード(IDEでデフォルトで使用される)とRELEASEモードのプロジェクトの違いが原因です。プロジェクトオプションを開き、アプリケーション(テーマのスタイルとアイコンが定義されている場所)までスクロールします。上部のプラットフォームとビルドオプションの組み合わせは、設定ごとに別々の値を保持していることに注意してください。DEBUGビルド構成でランタイムテーマが有効になっているのに、RELEASEでは有効になっていないことがわかります。

于 2012-06-24T07:14:54.657 に答える