访问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.Color和TGradient.Color1属性分别简单地写入Points[0].Color和Points[1].Color属性。