Firemonkey TControl subclass cannot draw on component

  

I want to try to create a firemonkey visual component and I have seen online that TControl gives the basic needs. This is what I have done so far:

TMyTest = class(TControl)
strict private
//code…
protected
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
//code…
end;

I have looked at the source code of a FMX component called PlotGrid and I have copied what it does. My class descends from TControl (like PlotGrid) and it overrides Paint (like PlotGrid). Look at the code:

constructor TMyTest.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
SetAcceptsControls(False);
end;

destructor TMyTest.Destroy;
begin
inherited;
end;

procedure TMyTest.Paint;
var
i: integer;
a, b: TPointF;
begin
Canvas.Fill.Color := TAlphaColorRec.White;
Canvas.Stroke.Color := TAlphaColorRec.Black;
Canvas.Stroke.Thickness := 2;

a.X := 0; a.Y := Height/2;
b.X := Width; b.Y := Height/2;
Canvas.DrawLine(a, b, 1);
end;

Given this code, I expect to have something like this (I have edited with paint the image, it’s not the real one)

The problem is that I get this

The component is fine because I see all the methods and properties and they work. The component is functional BUT I cannot see it in the designer! If I run the FMX application I cannot see the colors:

Any idea?

I have set the Opacity := 1; at the beginning of the Paint event but still nothing.

Comments are closed.