1

以下は、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.
4

0 に答える 0