他のPCで起動するとLabelのバックカラーが真っ白になるのは?

解決


チャトラン  2009-04-22 20:28:44  No: 34173

いつもお世話になります。
  チャトランといいます。
  質問の内容は、Labelをフォームに貼り付けて、ある処理をした
レコード件数をカウンタを表示させています。
  Labelのバックカラーを黒、フォントカラーを緑にしていますが、
開発機ではLabelに設定したカラーで表示するのですが、別のPC
へexeファイルをコピーするとバックカラーが真っ白になります。
フォントカラーは緑のままです。
  Parent〜と付いているプロパティはfalseにしています。
  どなかたか解決のヒントを教えて頂けますでしょうか?

開発環境はWindowsXP、Delphi2007です。
他のPCもWindowsXPです。


Manbon  2009-04-23 01:54:30  No: 34174

カラーがclWindowとかになっていませんか?


チャトラン  2009-04-23 19:00:23  No: 34175

Manbonさん、ありがとうございます。

  FormCreateでLabel1.Color := clBlack;にしています。
  表示プロパティのColorはclbrnTextにしています。
  同色でも他にclDefault、clInfoText、clMenuText、clNone、
cl3DDkShadow、clWindowFrame、clWindowTextがありますが、
何か目的に応じて使い分ける必要があるのでしょうか?


Manbon  2009-04-23 19:32:06  No: 34176

ウィンドウなら、標準のウィンドウの色、
ボタンなら、標準のボタンの色、等と、システムで色が
決まっていますので、それらを使いたいときにclInfoTextなどを
使えばいいと思います。

要は、システムの色をそのまま使用するのなら、プロパティで
色の変更はしなくてもいいと言うことになると思います。

で、今回の症状ですが、Label1.Color := clBlack;となっている
ということで、謎ですねぇ・・・。

他にLabel1.Color := 〜となっている箇所が無いか、
別の簡単なソフトを作成してみて、同じような症状が出るか、
Label1を一旦削除してみてもう一度作成するとどうなるか、
実験的にタイマーイベントでLabel1.Colorを変えるとどうなるか、
など、色々実験してみると何かわかるかもです。

ま、こういう色々試してみるのも腕が上がる一因になりますし^^


チャトラン  2009-04-23 20:21:41  No: 34177

Manbonさん。ありがとうございます。

  Delphi7もありますので、アドバイスを頂いたとおりに
色々と試してみます。
  また、結果をアップしますので、ご都合よろしければ
またアドバイスを頂ければ幸いです。


チャトラン  2009-04-23 21:09:47  No: 34178

Manbonさん。お世話になります。

  アドバイス頂いたのとおりLabelを張り替えても変わらず、
ローカライズ対象のParentBiDiModeをTureからFalseに変更すると、
他のPCでもLabelは同色で表示するようになりましたが、再度、検証
のため、ParentBiDiModeをTureにしても、他のPCでは同色で
表示するようになりました。
  まったく、訳が判らなくなりましたが、現在正常に動作しています。
  ひとつひとつメモ取りながら動作確認していますが、今度は何が原因
だったのか判りません。


チャトラン  2009-04-24 02:27:46  No: 34179

Manbonさん。お世話になります。

  原因がわかりました。
  私のDelphi2007だけかもしれませんが、【その他】のTranparentが
デフォルトでFalseになっていますが、再度、Falseを選択すると、
大文字表示になります。この状態にするとLabelのバックカラーの変更
が他のPCでも有効になりました。
  どうも、Labelを貼り付けとき、【その他】のTranparentがFalseに
なっていますが、中身はTureなのかもしれません。
  開発ツールはいろいろと試してみないと判らない事があるようですね。
  いろいろご指導ありがとうございました。(m_m)


Delphi大好き  2009-04-24 02:31:28  No: 34180

自分の場合の例ですが・・

ソースコードはあってるのに、
コード通りに動かない時って時々ありますよ。^^;

自分の場合はデータベースが最多です。

コンポの配置や取り消し、コードの修正を繰り返してると、
変な動作になったり^^;。
なので、データベースの場合は、
常にバックアップを複数作って製作してます。
何度もこのバックアップで助かりました^^。

因みに普通のコンポでそうなるのは、初めて聞きました。
色々なんですね^^;

このバグは自分の場合だけではないと知って、ちょっと安心しました^^。


ttt  2009-04-24 03:19:48  No: 34181

> 再度、Falseを選択すると、大文字表示になります。
大文字というか、オブジェクトインスペクタ上で太字になるんですよね?

太字はプロパティの値がデフォルト値と異なっていることを表します。
太字になっていないプロパティは、無駄を避けるためdfmに書き込まれないことがあります。
(実際に省略されるかどうかは、プロパティに付ける stored, default, nodefault 指令で決まります。
なので、必ずしもすべてのプロパティが変更すると太字になるわけではありません)

私が経験した中では、本来プロパティが変更されているのに正しくdfmに反映されなくなるケースが二度ありました。
・コンポーネントのデフォルト値やstored指令が変わった(私の場合、自作コンポーネントを修正したためでしたが)
・コンポーネントの継承に伴うもの(元のフォームでTrueに変更→継承したフォームでFalseに戻すなど)
どちらかに当てはまるということはないでしょうか?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加