TStringGridで、FormにStylebookを適用した場合の文字色で教えてください。
FormにStylebookを配置し”Dark"を適用しています。
個別にComponentに背景色や文字色など設定しなくても統一したLook&Feelを実現できるのだ思います。
実際、TEditやTSpinBox, TScrollBarなどうまくいっています。(黒っぽい背景で文字が白)
ただ、TStringGridだけは、背景色は統一されていますが、文字色に関して、カラムヘッダー部の文字色は他のコンポーネントと統一された白色となっていますが、セル内容の文字の色が黒となっていて、他のコンポーネントと統一が取れていません。
TStringGridのプロパティのTextSettingsのFontColorで白を設定しても、StyleBookが優先されるのか文字色は黒のまま変わりません。
そこで、"onDrawColumnCell"のところで、value:TValueを一旦ローカル変数に退避させ、
セルをクリアしてから退避内容を文字色白で書き戻す事を試しましたが、うまく行きません。
procedure TForm2.StringGrid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn;
const Bounds: TRectF; const Row: Integer; const Value: TValue; const State: TGridDrawStates);
var
str : String;
begin
str := Value.AsString; // 内容の退避
Canvas.Clear( Canvas.Stroke.Color ); // セルのクリア
Canvas.Fill.Color := TAlphaColors.White; // 文字色白
Canvas.FillText( Bounds, str, False, 1, [], TTextAlign.Leading, TTextAlign.Center ); // 再描画
end;
としましたが、クリアされたままで、内容が戻っていません。("再描画"のところで変数strに退避した内容は残っています)
"セルのクリア"の行をコメントアウトすると、内容は白字で再描画されますが、元の黒字の内容が残っているので微妙に二重になっています。
StringGridのセル内容を他のコンポーネントのStyleBook設定と同じにする事は出来ないのでしょか?
StyleBookの使用法?や"onDrawColumnCell"の使い方が違う様にも思います。
アドバイス頂けると幸いです。
当方、
Windows10+DELPHI XE6 with FMX
自己レスです。
まさかとは思いましたが、QPを参照してみました。
Project:Rad Studio(RSP)ー>Component:FireMonkeyで"XE6"や"StringGrid"で検索してみました。
StringGridではいくつか事例が報告されていましたが、本件に該当する例は無いようです。(英文なので自信はありませんが)
DELPHI自体のバグ出ないことを願っています。
> TStringGridのプロパティのTextSettingsのFontColorで白を設定しても、StyleBookが優先されるのか文字色は黒のまま変わりません。
> そこで、"onDrawColumnCell"のところで、value:TValueを一旦ローカル変数に退避させ、
> セルをクリアしてから退避内容を文字色白で書き戻す事を試しましたが、うまく行きません。
OnDrawColumnCellを使用せずに、
TStringGrid.StyledSettings.FontColor := FALSE;
TStringGrid.TextSetting.FontColor := claWhite;
とすると、どうなりますか?
KONNOYA様
ありがとうございます。
うまく行きました。
StyledSettingsのフォントカラー項目をオフに出来るのですね。
分かれば、当然の事の様ですが、分からないと苦慮します。
大変ありがとうございました。
ツイート | ![]() |