9

Delphi 2009 VCL TProgressBar を一種の「空/満杯」ゲージとして使用しています。

Vista では、Aero テーマが有効になっていると、これに関連付けられたアニメーションが表示されますが、これは煩わしく、ゲージには不適切です。

このコントロールのアニメーションを防ぐために、これを無効にする方法はありますか (ユーザーのテーマ設定を調整することではありません!)。

明確にするために、Windows エクスプローラーの「使用ディスク容量」メーターと基本的に同じものが必要です。アニメーションはありませんが、素晴らしい境界線とシェーディング効果があります。

アップデート:

本当の進行状況バーではなく、「メーター」が必要であることを理解しています。標準の Windows プログレス バー コントロールを使用してテーマ メーターを実装するにはどうすればよいですか?

4

5 に答える 5

11

プログレス バーのVista UI ガイドラインによると、そのような目的で TProgressBar を使用するべきではありません。

プログレス バーは進行状況のみに使用します。メーターを使用して、進行状況に関係のないパーセンテージを示します。

プロセス自動化アプリケーションなどを対象とした多くのサードパーティ コンポーネント (たとえばAbakus VCL ) がありますが、代わりにこれらのコントロールのいずれかを使用できますか?

于 2008-11-24T15:08:07.240 に答える
10

そのコントロールのテーマをオフにしてみてください。

SetWindowTheme(ProgressBar.Handle, ' ', ' ');
于 2008-11-24T22:33:47.607 に答える
3

http://rmklever.com/でVistaProBar を試してみてください。アニメーションは関連付けられて いません。

于 2011-05-05T16:20:45.897 に答える
1

まだ試していませんが、この質問はWinFormsに役立つ答えがあるようです。

メータースタイルのプログレスバーを使用するにはどうすればよいですか?

それをDelphiに変換します...

于 2011-05-05T13:41:50.467 に答える
0

このフォーラム スレッドをご覧ください。これは私が見つけた唯一の有望なリンクであり、最初の投稿ではさまざまな進行状況バーの状態について言及されているため、Smooth、State、および Style プロパティを変更してもおそらく役に立たないでしょう。

最後の投稿のヒントがメーター スタイルでプログレス バーを描画する唯一の方法である場合は、TProgressBar の下位クラスを作成し、WM_PAINT ハンドラーをオーバーライドし、Vista と有効なテーマを確認し、その中で最善の方法を選択します。この場合、UxTheme の関数を使用して、コントロールのさまざまな部分を描画します。

于 2008-11-24T21:37:34.943 に答える