访问Delphi中的只写属性

我很难访问渐变中使用的颜色,例如 firemonkey 中的 TRectangle。渐变属性(颜色和颜色 1)被定义为只写,但有必要读取它们的值。

访问这些属性的读取值的正确方法是什么?

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Objects;

type
  TForm1 = class(TForm)
    Rectangle: TRectangle;
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.FormCreate(Sender: TObject);
var
  ColorGradient1: TAlphaColor;
begin

  // Error [dcc32 Error]: E2130 Cannot read a write-only property
  ColorGradient1 := Rectangle.Fill.Gradient.Color1;

end;

end.

回答

使用TGradient.Points物业。根据TGradient文档:

TGradient 实例用于创建渐变图案。一个渐变默认有两个点,这两个点的颜色暴露为Color和Color1。但是也可以有两种以上的颜色,这就需要通过Points属性修改TGradientPoints。渐变可以在任何给定点开始和结束,并且可以是线性的(默认情况下)或径向的。

Points属性是集合TGradientPoint对象和TGradientPoint.Color属性是读/写。在内部,TGradient.ColorTGradient.Color1属性分别简单地写入Points[0].ColorPoints[1].Color属性。


以上是访问Delphi中的只写属性的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>