Android:未声明标识符

时间:2014-10-23 13:04:55

标签: android delphi delphi-xe7

这是我的代码:

procedure TForm1.PaintBox1Paint(Sender: TObject; Canvas: TCanvas); 
var
  i: Integer;
begin
  Randomize;
  Paintbox1.Canvas.Brush.Color:=clWhite;
  Paintbox1.Canvas.Rectangle(0,500,500,0);
  Paintbox1.Canvas.MoveTo(1,0);
  Paintbox1.Canvas.LineTo(1,500);
  Paintbox1.Canvas.Pixels[xx,yy]:=clBlack;
  ...
end;

当我尝试编译此代码时,我得到:

  

标识符未声明   '刷''颜色''矩形''通过MoveTo''的LineTo''的TextOut& #39;,'像素'

1 个答案:

答案 0 :(得分:3)

未声明错误标识符意味着您的PaintBox1对象不包含属性和方法'刷','颜色','矩形' ...

在这种情况下,它发生的原因是Delphi使用新的FireMonkey(FMX)框架进行Android开发而不是VCL。这两个框架中的类和控件具有完全不同的根,虽然它们确实有一些相似之处,但它们的功能,属性和方法却截然不同。最重要的是,您不能使用与VCL进行Windows开发时使用的相同代码。

有关FMX TCanvas课程的更多信息,请访问:

http://docwiki.embarcadero.com/Libraries/XE7//en/FMX.Graphics.TCanvas_Properties http://docwiki.embarcadero.com/Libraries/XE7//en/FMX.Graphics.TCanvas_Methods

正如您所看到的,FMX TCanvas不再具有' Brush'财产,但'填写'和'中风'刷。

  PaintBox1.Canvas.Fill.Color := TAlphaColorRec.White;
  PaintBox1.Canvas.FillRect(RectF(0, 0, 500, 500), 0, 0, AllCorners, 1);

  PaintBox1.Canvas.Stroke.Color := TAlphaColorRec.Blue;
  PaintBox1.Canvas.Stroke.Kind := TBrushKind.Solid;
  PaintBox1.Canvas.Stroke.Thickness := 1;
  PaintBox1.Canvas.Stroke.Join := TStrokeJoin.Miter;
  PaintBox1.Canvas.DrawLine(TPointF.Create(1, 0), TPointF.Create(1, 500), 1);