Mam problem z napisaniem poprawnie procedury Paint we własnym komponencie. Procedurą Paint chciałem się posłużyć do namalowania wyglądu mojego komponentu przy pomocy funkcji FillRect oraz FrameRect lecz coś jest nie tak ponieważ w momencie kiedy od komentuje obojętnie którą funkcję i skompiluje komponent a następnie spróbuje go umieścić na formatce wyskakuje błąd o treści: "Control '' has no parent" mimo że zmienna FCanvas w konstruktorze klasy jest powołana do "życia" a wygląda to tak:
constructor TXXX.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FCanvas:=TControlCanvas.Create;
TControlCanvas(FCanvas).Control:=Self;
Color:=clBlue;
Width:=150;
Height:=20;
end;
destructor TXXX.Destroy;
begin
FCanvas.Free;
inherited Destroy;
end;
procedure TXXX.Paint;
var plotno,ramka:TRect;
begin
with Canvas do
begin
plotno:=Rect(0-1,0,Width,Height);
Brush.Color:=clBtnFace;
FillRect(plotno);
ramka:=Rect(0,0,Width,Height);
Brush.Color:=clBlack;
FrameRect(Rect(0,0,Width,Height));
end;
end;
procedure TXXX.SetColor(Val: TColor);
begin
if Val <> FColor then
FColor:=Val; Paint;
end;
Przy czym pole Canvas zadeklarowane jest w sekcji Public jako property.
I moje pytanie brzmi: Dlaczego przy wstawianiu komponentu na formatke otrzymuje w.w. komunikat błędu oraz gdzie mam źle. Proszę o pomoc.