いつもお世話になっております。1点質問させてください。
1 環境
①Windows10 + Delphi10.3.3 Community
②Windows10 + Delphi6 Personal
※Windows10の配色は、デフォルトの設定です。
2 現状
①の環境でTCoolBarを配置すると、白っぽい色をしています。
②の環境でTCoolBarを配置すると、は灰色っぽい色(clBtnFace)をしています。
3 やりたいこと(ご質問事項)
・②のTCoolBarの色を①の色と同色にしたいと考えています。
・②のTCoolCarのColorプロパティに以下のような色を指定すると白っぽくなりますが、
本来、どの色を指定するのが正解なのでしょうか。
・clBtnHighlight
・clWindow
解決策ではありませんが、
> どの色を指定するのが正解なのでしょうか。
正解とか不正解というのではありませんよね ?
コンパイルして実行した結果がそうなるのですから、それは単なる「結果」です。
Windows XP からはテーマという機能が実装されています。
結果はテーマに対応しているか、対応していないかの違いです。
テーマに対応したデザインのアプリにするには、アプリケーションマニフェストが必要です。
参考
https://ht-deko.com/tech077.html
http://mrxray.on.coocan.jp/Delphi/Others/ApplicationManifest.htm
https://ht-deko.com/tech074.html
http://mrxray.on.coocan.jp/Delphi/plSamples/888_XPSkinForm.htm
システム全体のテーマは、Windows 10 では [個人用設定] [テーマ] 等から変更できます。
Windows XP というのは、起動時の画面が以下のような OS です。
20 年前ですね。
今でも、日本国内の組織やアメリカの政府機関などでも現役で使われているようです。
http://mrxray.on.coocan.jp/Delphi/Others/WindowsXP_AddEraName.htm#fig1
↑の補足ですが、Delphiの新しいバージョンでもTCoolBarの色はclBtnFaceが指定されるようです。
実際に実行したときに白っぽくなるのはテーマが適用された結果なので、Delphi 6でも何らかの方法でテーマを適用すれば白っぽくなるものと思います。
逆にDelphi 6でテーマを適用せずに配色をテーマに合わせる方法があるか、ということになると、これはちょっと難しいかもしれません。
HFUKUSHI さん、どうもです。
説明が不足していました。決して故意ではありません (笑)
ついでに・・・
Delphi 6 の場合、基本的には、秘密のウィンドウに対する対応も必要です。
ただし、そんなことはどうでもいい、というポリシーであればその限りではありません。
[ 03_Delphi 6 で作成して Vista 対応にしたアプリの最小化と元に戻す ]
http://mrxray.on.coocan.jp/Delphi/plSamples/648_OtherApp_MinimizeRestore.htm#03
[ 04_Delphi 6 で作成して Vista 未対応アプリの最小化と元に戻す ]
http://mrxray.on.coocan.jp/Delphi/plSamples/648_OtherApp_MinimizeRestore.htm#04
書き込みありがとうございます。スタイルという概念はXPで終わったと思っていましたが、
ずっと続いていたのですね。試しに先ほど、10.3.3でスタイルを外して実行してみましたら、
確かに昔懐かしい凹凸付きのUIが現れました。
参考までに、このDelphi10.3.3が出力するmanifestの記述を参考に、スタイルを適用してみま
した。当方のソフトではToolBarを3つ載せているのですが、CoolBarのグリップ部分(ToolBar
の頭の点線が縦に並んでいる部分)は白く変わったものの、結局、ToolBarのところはclBtnFace
の色のままでした。
スタイルは千差万別のようですので、色を指定してごまかすのは、確かに難しそうです。
ただ、Ansi版Delphiで作られたVxEditorを見ると、CoolBarに乗せたToolBarの色が真っ白に変わ
っていたので、何かしら工夫があるのではないか?とも思いましたが、残念ながらその方法は
まだ見つかっていません。
WindowsXPかそれ以前のOSでDelphi5や6で開発していた時期特有ですが
既存のデザインが良いかXPスタイルで良いのかをユーザーに選択させていました。
VxEditorの配色はその辺が影響していると思われます。
もう環境が無いので確認出来ませんが
上記の開発環境で開発中のフォームやコンポーネントは今まで通りの配色なのに
実行すると真っ白に変わる現象とかもありました。
そういうときはDelphiを再起動して直してたのでそういうものだろと気にしてませんでしたね
参考までに・・・
目で見た方が確実です.
[ 02_Color と ParentColor と ParentBackground プロパティの効果 ]
http://mrxray.on.coocan.jp/Delphi/Others/Delphi_Versionl.htm#02
take様、書き込みありがとうございます。
確かにANSI版delphiと一言で言っても、delphi5なのかdelphi2007なのかによっても大きく変わりそうです。
後者ならば確かにスタイルに対応していて当然のような気がします。
開発環境により、Delphi6と挙動が異なるのもありうることです。
Mr.XRAY様、わざわざcoolbarとtoolbarを使った画面サンプルをお示しくださり、ありがとうございます。いつもながら、頭の下がる思いでおります。
新しくcoolbarと toolbarを配置して、そのparent colorというプロパティを改めていじってみました。coolbarは、単体では白いです。toolbarは、単体ではclBtnFaceです。
toolbarをcoolbarに乗せて、parent colorをオンオフ切り替えても、toolbarの色はこのままでした。
delphi6はスタイルという概念が出る前の製品だったと記憶しております。現状ではやはり、古いdelphiの動作仕様ということなのかもしれませんね。
このようなコンポーネントが公開されていますが、TCoolCarは含まれていません。
Delphi6用XPビジュアルスタイル対応コンポーネント
https://www.vector.co.jp/soft/win95/prog/se219006.html
manifestが適用されていると、TButton のように、OSに描画をまかせているものは、
VCLでもテーマ対応の描画をしてくれますが、VCL内で描画を行っているものは、
テーマ対応の描画は行ってくれません。
なので、TButton:○、 TBitBtn、TSpeedButton:× となり、見た目が混在しちゃう。
どうしてもDelphi 6 でテーマ対応したいのであれば、上記のようなコンポーネントを参考に、
自力で対応させるしかないでしょうね。
テーマ対応すると、clBtnFaceでも、白っぽく(OSの配色がそうなんでしょうが)なりますけど、
その白っぽいのがイヤだけど、テーマ対応しろという、無茶なことを言われることがあるという。。。
「智に働けば角が立つ,情 (ジョウ) に棹させば流される.意地を通せば窮屈だ」
ですが,大勢には流された方が無難です.
マックロソフトさんの「小さな親切,大きなお世話」という情 (なさけ ? ) にも
エンバカデロさんにも素直に従う方がよろしいかと・・・
小説家であり哲学者でもぁったカミュに言わせると
不条理な運命に対して見つめたり行動することは「反抗」だそうです.
「不条理」と解釈するかどうかが問題ですが・・・
カミーユ様、参考になりそうなコンポーネントのご紹介、誠にありがとう
ございます。ただ、恥ずかしながら、自分はそれほど高度な技術は持ってお
らず、また、この部分のために多大な時間を費やすのは、それはそれでもっ
たいないという気持ちがあります。(素人ながら、もう少し汎用的な部分で
の技術の研鑽に努めたいと思っています。最新の環境への移行も。)
スタイルについては、自分も適用したい気持ちですが、一部のコンポーネ
ントの白っぽさが目につきました。そのような感想を持つ方の気持ちもよく
分かる気がします。
Mr.XRAY様、改めて書き込みありがとうございます。そのあとも、半分あ
きらめきれずにいろいろとやっていたのですが、方向性としては、ツールバー
の配置をシンプルに見直すことで、クールバーを使用しなくてよい方向にし
ようとしています。もう20年間も付き合ってきたソフトですので、愛着が
あり、使えなくなるまではメンテナンスしようと思っていますが、古すぎる
開発環境であることは実感しています。そのため、今回はクールバーの使用
回避ということで、根本的な解決ではないものの、これで決着させていただ
きたいと思います。
ご助言をくださった皆様をはじめ、こちらの皆様に深く感謝申し上げます。
誠にありがとうございました。
ツイート | ![]() |