ホーム >プログラム >Delphi 6 ローテクTips

コンポーネントメモ・TLabel

TLabelの問題点。

ColorプロパティにclWindowを指定した場合、それが反映されない

症状:
設計時にTLabelのColorプロパティにclWindowを指定した場合、実行時には親コントロールの色になってしまいます。
またプロジェクトを保存し閉じた後でそのプロジェクトを開いた場合TLabelのColorプロパティはclWindowではなく親コントロールの色になってしまいます。
ParentColorプロパティがFalseなのにTrueの場合と同じような挙動になるということです。
調べてみるとdfmファイルにTLabelのColorプロパティの値が保存されていませんでした。

対策:
フォームのOnCreateイベントなどで当該LabelのColorプロパティにclWindowを代入することで回避できます。

procedure TForm1.FormCreate(Sender: TObject);
begin
  Label1.Color := clWindow;
end;

備考:
ColorプロパティにclWindowを指定した場合のみの挙動です。

TLabelだけでなくTPaintBoxのColorプロパティにclWindowを指定してもdfmファイルに保存されていないことから多分TControlのColorプロパティの実装が間違っているのだろうかなと。


2009-01-26: