[Delphi:90241] XPスタイルでTLabelのColorが無視されます

1,786 views
Skip to first unread message

中根 猛始

unread,
Jan 20, 2008, 9:10:07 PM1/20/08
to Del...@users.gr.jp
中根と申します。

調べたつもりですが、既出でしたらすみません。

XPスタイルに対応させたくて、
XPManifestコントロールをFormに配置したのですが、実行すると
Colorプロパティに設定した値が無視され、TLabelの背景色が抜けてしまいます。
(TransparentをTrueにしたような感じ)

クラシックスタイル環境下で実行すると、設定した背景色で描画されます。

これはXPスタイルの仕様なのでしょうか?

ラベルの背景に矩形の色をつけたい場合、
TPanelなどと併用するしかないのでしょうか?


使用環境は
Turbo Delphi Explorer 2006
Windows XP Pro SP2
です。

Yasuhiko Yoriki

unread,
Jan 21, 2008, 5:58:14 AM1/21/08
to Del...@ml.users.gr.jp
寄木です。

> XPスタイルに対応させたくて、
> XPManifestコントロールをFormに配置したのですが、実行すると
> Colorプロパティに設定した値が無視され、TLabelの背景色が抜けてしまいます。
> (TransparentをTrueにしたような感じ)

私も昔、Delphi7の時にはまりました。
Delpi7の時と同じ方法で対処できるなら、下記のようにしてみてください。

1.PanleのColor値を変更する。
2.ParentBackground プロパティを false → true → false
以上です。

------------------------------------------------------------------
Windows Vista Ultimate *64 / Delphi 2006 Pro Up2 / 2007 Pro
Yasuhiko Yoriki 寄木康彦
mailto:yor...@yoriki.jp http://www.yoriki.jp/


中根 猛始

unread,
Jan 21, 2008, 7:52:01 AM1/21/08
to Del...@ml.users.gr.jp
中根です。
寄木さんレスありがとう御座います。

Labelを乗せているPanelで、教えていただいた方法を試しましたが、
残念ながら解決されませんでした。
Label自身はParentBackgroundがないので、変わりにParentColorで同様のことを
してみましたがやはり改善されませんでした。

Delphi7で対処の実績があるとのことなので、
XPスタイルの仕様というわけではないんでしょうか?

もう少し試行してみます。

TAKAHASHI, Tomohiro

unread,
Jan 21, 2008, 8:25:45 AM1/21/08
to Del...@ml.users.gr.jp
高橋(智)です。

TLabelのTransparentプロパティがFalseとして.DFMファイルに保存されていないからか
もしれません
TLabelのTransparentプロパティをいったんFalseからTrueに変更後、再度Falseに戻して
みてください。
私のフォームでは、その結果以下のような.DFMファイルが保存され、TLabelの背景色が
XPManifest環境下でも表示されました。

------------------------------------
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 239
ClientWidth = 383
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 96
Top = 56
Width = 31
Height = 13
Caption = 'Label1'
Color = clRed
ParentColor = False
Transparent = False
end
object XPManifest1: TXPManifest
Left = 280
Top = 88
end
end
------------------------------------

--
高橋智宏
Java読書会( http://www.javareading.com/bof/ )

Yasuhiko Yoriki

unread,
Jan 21, 2008, 8:30:51 AM1/21/08
to Del...@ml.users.gr.jp
寄木です。

すみません、原文を読み間違えまして、Panelと勘違いしてしまいました。
Lableでしたね。

Transparent のプロパティの false → true → false ではだめでしょうか。
もしそれでだめなら、同じように、parentcolor でも確かめてみるといいかもし
れません。

Delphi 7 での対処法が記憶の彼方に飛んでしまっていますので、見当違いであ
れば申し訳ありません。

中根 猛始

unread,
Jan 21, 2008, 7:22:04 PM1/21/08
to Del...@ml.users.gr.jp
中根です。
高橋さん、寄木さん、ありがとう御座います。

TLabelのTransparentを、False → True → False
とすることで、.DFMに、
「Transparent = False」が書き込まれることと、
実行時に正しく背景色が表示されるのを確認しました。

Delphi7も使っていましたが、XPスタイルに対応させたことが無かったため、
こんな問題があることも知りませんでした。

これで安心してXPスタイルに対応できます。
ありがとう御座いました。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/ 株式会社ワイズクラック
_/ 中根 猛始 <t.na...@wisecrack.co.jp>
_/
_/ 〒460-0002 名古屋市中区丸の内3-6-27(EBSビル 4F)
_/ TEL:052-968-2560 FAX:052-968-2561


Reply all
Reply to author
Forward
0 new messages