2012-01-14 11 views
1

オリジナルの質問はTGaugeに関するものですが、コメントで指摘されているように、使用することは推奨されません。また、表示された(%テキスト)キャプションをカスタムカラーに設定しようとすると、バックグラウンド)別名、それはもはや半分の色にならないでしょう。TProgressBar(背景/プログレスバー自体)の色をDelphiの(カスタム)色に変更する方法は?

TProgressBarを使用するつもりですが、明示的にプロパティを変更していないように見える色(背景/プログレスバー自体)の問題はまだありますが、現在のウィンドウテーマと結びついていますが、そこにありますそれを無視する方法でなければなりません。

+0

TGaugeで直接行うことはできません。祖先を作成し、Paintメソッドをオーバーライドする必要があります。 – kobik

+0

@kobikわかりました。私はペイント法についてスクワットを知っていて、物をオーバーライドする方法の表面を傷つけました。私は答えを探すために外に出たと思いますが、それについての包括的なリソースを教えてくれますか? – Raith

+2

部分的な色付けの仕方は、色の反転に直接関係しています。それは、ラベルが描かれているサイトで前景色の 'XOR'を使って行われます。 ( 'TGauge'のソースを参照してください。)色を置き換えて逆変換を取り除くと、テキストの部分的な色付けもできなくなります。しかし、TGaugeは使用しないことをお勧めします。これは残っているDelphi 1コンポーネントであり、実際には日付がついています。現代のUIはプログレスバーを使用し、テキストのプログレスバーも表示する場合は、プログレスバーの上または右に別のラベルを表示します。 –

答えて

3

これはTGaugeの問題を解決するものではありませんが、TProgressBarの問題は解決しません(昨日、OPによって提起された正確な質問に回答しないという別のDelphiの質問について、無視する)。他の人が指摘しているように、TGaugeは廃止され、もう使用することは推奨されていません。 TProgressBarのバーと背景色の両方を変更するために必要なコードは次のとおりです。

ProgressBar1.Brush.Color:= clRed; // Set Background colour 
SendMessage (ProgressBar1.Handle, PBM_SETBARCOLOR, 0, clBlue); // Set bar colour 
+0

ありがとう、とにかく私は質問を編集し、この答えを受け入れるかもしれないことをこれがやっていることを提案する方法です。 – Raith

+0

私は答えを受け入れることであまりにも急いでいたかもしれませんが、なぜそれが私にこれを与えるのですか? 'E2003宣言されていない識別子: 'PBM_SETBARCOLOR'' – Raith

+2

' CommCtrl'(XE2)ユニットをusesディレクティブに含めましたか? –

関連する問題