der Fehler liegt bei
Canvas.Rectangle(5, 5, 10, 10);
Zum Zeitpunkt des Create hat die Komponente noch kein Parent und somit auch keine Canvas und somit kommt ein fehler. Man sollte in jedem fall soetwas in der Paint-Methode machen um sicherzustellen das eine Canvas vorhanden ist denn Paint wird nur aufgerufen wenn auch eine Canvas vorhanden ist
Delphi-Quellcode:
TPendel = class(TGraphicControl)
private
{ Private-Deklarationen }
protected
{ Protected-Deklarationen }
public
{ Public-Deklarationen }
constructor Create(AOwner: TComponent); override;
procedure Paint; override;
published
{ Published-Deklarationen }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Beispiele', [TPendel]);
end;
constructor TPendel.Create;
begin
inherited Create(AOwner);
end;
procedure TPendel.Paint;
begin
//eventuell noch "inherited Paint" wenn du die ursprüngliche Paintmehtode ausführen willst
Canvas.Rectangle(5, 5, 10, 10);
end;
Warum bist du eigentlich von TWinControl auf TGraphiccontrol umgestiegen? TWinControl hat ein
Handle, TGraphiccontrol nicht und somit zeichnet sich deine Komponente immer auf das Parentcanvas...
Wenn deine Componente auch einen Button überdecken können soll würde ich von TCustomControl ableiten, dann hast du auch ein
Handle...