FMXでStyleBookを使っている場合のボタン等の色の変更について

解決


yTake  2021-11-12 08:13:55  No: 149921  IP: 192.*.*.*

FMXでStylebookを適用しています。
例えば、Buttonコンポーネントの”カスタムスタイルの編集...”に入り、”構造”ウィンドウで"Button1Style1:TLayout"を選択しオブジェクトインスペクタ・ウィンドウの"Fill"で"Color"を設定します。
これでボタンには色が設定できるのですが、プログラムを実行すると、初期値として指定した色でボタンが表示されますが、マウスカーソルをボタンの上へ持ってくるとボタンの色がデフォルト色に戻り、マウスカーソルをボタン上から外してもボタンの色は戻りません。デフォルト色のままです。
設定を確認する為に、そのButtonコンポーネントの”カスタムスタイルの編集...”に入り、”構造”ウィンドウで"Button1Style1:TLayout"を選択しオブジェクトインスペクタ・ウィンドウの"Fill"で"Color"はデフォルト色になっています。但し、このままプログラムを実行するとそのボタンの初期色は設定した色にはなっています。
これは他のボタンに他の色を設定しても同じで、実行すると設定色を確認出来ますが、オブジェクトインスペクタでは確認できません。
ちょっと不便です。こういうものなのでしょうか?
また、ボタンの色の変更の前に、試しにマウスカーソルが上に来ると縁取りされる様なアクション(groweffect)を設定したのですが、それが悪さをしているかも知れません。"Groweffect"を外したいのですが、削除の方法がわかりません。"Groweffect"の上で右クリックしメニューを出しても”削除”などは見つかりません。どの様に"Groweffect"を無効にすればよいのでしょう?

アドバイス頂けるでしょうか?


当方、
DELPHI  XE6 + FMX  /  64bit Windows 10 Pro
です。

編集 削除
yTake  2021-11-15 05:12:48  No: 149926  IP: 192.*.*.*

補足です。
カスタムスタイルで"構造"ウィンドゥに"buttonstyle:TLayout"の子ツリーで"background:TRectangle"と言う項目があります。
ここの”Fill”の子プロパティで”kind”と言う項目があり、そこを"Solid"にすることで、DELPHIの編集画面でも"Color"に設定した色になる事が分かりました。
ただ、以前として、実行すると初期値としての色は設定通りですが、マウスカーソルを上に持ってくるとグラディエーションに戻ってしまい、マウスが外れても設定した色には戻りません。再度、マウスを上にもってきても設定した色に戻りません。

なお、構造ウィンドウで同じ項目名のアイテム(設定)があります。
例えば、"buttonstyle:TLayout"と言う項目があります。
これから派生して(と思っています)
"button1style1:TLayout"
"button2style1:TLayout"
"button3style1:TLayout"
が存在しています。
コンポーネントのButton1, Button2, Button3に対して、カスタムスタイルを適用した為と思います。
問題は、この内"button3style1:TLayout"が3つ存在しています。
"buttons3tyle1:TLayout", "button3style2:TLayout""button3style3:TLayout"の様に枝番が違うと言う事もなく、全く同じ名前で3つ存在しています。
これは正常なのでしょうか?
そして、これら3つに個別に設定に設定はされず、共通の様です。
1番目の"buttons3tyle1:TLayout"をクリックすると"buttons3tyle3:TLayout"が選択(ハイライト)され、設定変更可能ですが、"buttons3tyle2:TLayout"や"buttons3tyle3:TLayout"をクリックしても何も選択されません。
2番目、3番目の存在が分かりません。

編集 削除
yTake  2021-11-18 02:46:06  No: 149929  IP: 192.*.*.*

質問の仕方が悪かったかも知れません。
内容が伝わらなかったでしょうか?(すみません)

カスタムスタイルの編集で設定した項目内容が反映する場合としない場合がありIDEウィンドウでその設定を確認出来ない場合があります。設定項目がその場で確認出来なくても実行してみると初期状態では設定が確認出来て意図通りに設定されていると分かります。
確認の為にいちいち実行しなくてはならず不便です。

また、項目設定が直ちにIDEウィンドゥで確認できる出来ないに関わらず、イベント後に元の設定値に戻ってしまいます。その後、意図していた設定には戻りません。
これは、エフェクトが関係する様で、採用しているStylebookに適用されていたエフェクトが発生し、その処理が終わって元の設定に戻す際に、カスタムスタイルで設定した値ではなく、テンプレートとして最初に読み込んだStylebookの値に戻ってしまっている為と思います。
これは正常な動作なのでしょうか?

適用したStylebookは”DARK”で、当面直面している問題はTButtonの色の変更です。
元々、グレースケールのグラディエーションに設定されているのを、ある固定色にして、そのボタン処理が終わったら、次に行うべき処理のボタンの色を変更します。

現在は、EnableをFalseに設定していて、あるボタン処理が終わったら次に行うべきボタンのEnableをTrueに変更します。この様に操作ガイド的に次の操作ボタンを順次Activeにしていますが、これをボタンの色変更でも示したいと考えています。

「DARK」StylebookのTButtonのデフォルト設定でマウスフォーカスオン時にグラディエーション色が明るくなったりフォーカスオフで暗くなるエフェクトを削除もしくは停止したいのですが、カスタムスタイルの編集で構造の"buttonStyle:TLayout"が全てのボタンコンポーネントに適用される共通設定と思います。ここで"gloweffect1:TGlowEffect"が設定されていますが、グラディエーション明暗に関するエフェクトは見つかりません。また、この"gloweffect1"はEnable=Falseにしてあります。
どこでグラディエーション明暗のエフェクトを停止させるかが分かりません。

長くなってしまいましたが、ご不明な点は質問して下さい。

編集 削除
yTake  2021-11-20 02:56:37  No: 149937  IP: 192.*.*.*

お騒がせしました。
StyleBookを適用していない基本の状態での動作を誤解していた様です。
元々、StyleBook適用しなくてもマウスフォーカスされると濃淡変色していました。
これはTAB位置(TABキーを押して変わる選択ボタンの位置)とも兼ね合いがあって、選択されている位置を知る上で必要ですよね。
ボタン色を変更するにはカスタムスタイル編集に入る必要があり、プログラム中から変更するには更に難しそうです。

取り敢えず、あるボタン処理完了後の次にクリックされるべきボタンへFocusをセットする事にしたいと思います。
ただ、これでは次にクリックされるべきボタンが実際にクリックされる前に何らかの要因でそこからFocusが移動した場合にFocusを戻す手段がない様に思います。ボタン色変更以外に何か良い方法があれば良いのですが、、、暫く思案してみます。

編集 削除
yTake  2021-11-24 00:25:43  No: 149944  IP: 192.*.*.*

カスタムスタイルの編集で構造ウィンドゥ内で”buttonStyle”が二重化する(しないボタンもある)不可解な問題はありますが、Effectを活用する方向でやってみます。

一応、本項、閉めさせて頂きます。

編集 削除