[delphi-users:4940] Delphi10.2 FMX のStringGridで行ごとに色を変えるには

335 views
Skip to first unread message

Quest

unread,
Jul 10, 2018, 1:32:34 AM7/10/18
to delphi...@freeml.com
件名の通りなんですが
Seattleの時にはTCustomGridを継承して内部のTextSettingsControlを引っ張り出して
何とか出来ていたんですが、Gridコンポの構造が変更されたので
同じ方法ではできなくなってしまいました。
試行錯誤の上StringGridのDefaultDrawingをFalseにしてOnDrawColumnCellイベントで

if StringGrid1.Cells[10,Row] = '1' then
StringGrid1.TextSettings.FontColor := claRed
else
StringGrid1.TextSettings.FontColor := claBlack;
Column.DefaultDrawCell(Canvas, Bounds, Row, Value, State);

としてみましたが全体が赤くなってしまいます。
正確には、最初の表示では一番左の列だけ黒く、他は全部赤文字で
グリッドのどこかをクリックするとすべてのセルが赤文字になってしまいます。
行ごとに文字色を変えるには、どうすればいいのでしょう。

よろしくお願いいたします。



MLホームページ: https://www.freeml.com/delphi-users

----------------------------------------------------------------------
無料ゲームから本格的に楽しめるゲームまで、
インストール不要でスグに遊べます♪
今すぐ遊ぶ ⇒
http://user.gesoten.com/cid/m/378?z=0&g=0
------------------------------------------------------[freeml byGMO]--

あなたの街のチラシがいつでも無料で見放題!
チラシをクリックしてチラシが拡大されたらポイントゲット♪
まずはかんたん登録♪ -ポイントタウン-
https://www.pointtown.com/ptu/rd.cgi?cid=8912
----------------------------------------------------------------------

hosokawa

unread,
Jul 10, 2018, 2:37:09 AM7/10/18
to delphi...@freeml.com
Quest さん

こんにちは。
細川です。

普段 Grid コントロールを使わないので合ってるのか解りませんが、こんな感じでしょ
うか。

---------------------------------------------------------------------
type
TOpenColumn = class(TColumn);

procedure TForm1.StringGrid1DrawColumnCell(Sender: TObject;
const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF;
const Row: Integer; const Value: TValue; const State: TGridDrawStates);
var
OpenColumn: TOpenColumn absolute Column;
begin
if Odd(Row) then
OpenColumn.Layout.Color := TAlphaColors.Red
else
OpenColumn.Layout.Color := TAlphaColors.Aqua;
end;
---------------------------------------------------------------------
Regards,
HOSOKAWA Jun
Application Division 3 Manager
embarcadero MVP for Delphi

[S/G] SERIALGAMES Inc.
TEL: 03-5812-4368
FAX: 03-5812-0970

---------------------------------------------------------------
このメールには、本来の宛先の方のみに限定された機密情報が含まれて
いる場合がございます。お心あたりのない場合は、送信者にご連絡のうえ、
このメールを削除してくださいますようお願い申し上げます。
PLEASE READ:This e-mail is confidential and intended for
the named recipient only. If you are not an intended recipient,
please notify the sender and delete this e-mail.
---------------------------------------------------------------


MLホームページ: https://www.freeml.com/delphi-users

----------------------------------------------------------------------
\GMOクリック証券のバイナリーオプションって?/
操作はたったの3ステップ。初心者でも迷わずお取引!
スマホでもPCでも、どこでもお取引が可能。
日本の企業だから入金・出金も安心。
https://ad.atown.jp/adserver/cp?sid=876ad&did=6240&emid=&u1=

Quest

unread,
Jul 10, 2018, 12:32:35 PM7/10/18
to delphi...@freeml.com
細川さん、いつもありがとうございます。

ご教示いただいた方法でうまくできました。

DefaultDrawingプロパティをFalseにしてOnDrawColumnCellイベント内で
var
OpenColumn: TOpenColumn absolute Column;
begin
if 赤表示する条件 then
OpenColumn.Layout.Color := claRed
else
OpenColumn.Layout.Color := claBlack;
Column.DefaultDrawCell(Canvas, Bounds, Row, Value, State);
end;
とすることで希望通りの処理になりました。
ありがとうございました。



MLホームページ: https://www.freeml.com/delphi-users

----------------------------------------------------------------------
freemlを運営するGMOメディア株式会社では、
2019年新卒採用の募集をしております。
【募集職種】エンジニア職/Webデザイナー職
説明会も開催中!下記よりアクセスしてください。
https://www.gmo.media/recruit/?utm_medium=freeml&utm_source=freeml
Reply all
Reply to author
Forward
0 new messages