以下は、2 つの列、ボタン、および編集ボックスTStringGrid
を含むコンポーネントを含むフォームです。TStringColumn
ボタンをクリックすると、1 つのセルの内容とその背景色、列の色、および編集ボックスの色が変更されます。セル テキストが更新され、正しく書式設定され、編集ボックスの色が変更されますが、セルの色は変更されず、列の色も変更されません。
Ray Konopka と Mike Sutton からの以前のすべてのヒントに従っていると思います...このコードの一部が機能しない理由を誰か教えてもらえますか?
このコードは、FireMonkey の新しいバージョンではコンパイルできない可能性があることを承知しています。
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Grid, FMX.Layouts, FMX.Objects,
FMX.Edit;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
StringGrid1: TStringGrid;
StringColumn1: TStringColumn;
StringColumn2: TStringColumn;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
var
rect: TRectangle;
cell: TTextCell;
text: string;
begin
// Select a cell in column 1
cell:= stringColumn1.CellControlByRow(3) as TTextCell;
// Enter some text in cell
text:= 'hello sailor';
cell.TextAlign:= TTextAlign.taCenter;
cell.Text:= text; // works fine
// Change cell background color
rect:= cell.FindStyleResource('background') as TRectangle;
if rect <> nil then
rect.Fill.Color:= claRed; // does nothing
// Change color of all cells in grid
rect:= stringGrid1.FindStyleResource('background') as TRectangle;
if rect <> nil then
rect.Fill.Color:= claBisque; // works fine
// Change color of all cells in column 2
rect:= stringColumn2.FindStyleResource('background') as TRectangle;
if rect <> nil then
rect.Fill.Color:= claGreen; // does nothing
// Change background color of edit box
rect:= edit1.FindStyleResource('background') as TRectangle;
if rect <> nil then
rect.Fill.Color:= claBlue; // works fine
end;
end.