Puedes quitar un 90%
Código Delphi
[-]
unit CLabel;
interface
uses
Classes, StdCtrls, Controls;
type
TCLabel = class(TLabel)
protected
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
end;
implementation
uses
Graphics;
constructor TCLabel.Create(AOwner: TComponent);
begin
inherited;
AutoSize := False;
Alignment := taCenter;
Layout := tlCenter;
end;
procedure TCLabel.Paint;
begin
inherited;
Canvas.Ellipse(ClientRect);
end;
end.
Realmente no hay mucho que entender. Lo que estás haciendo es crear una nueva clase de componente que deriva de TLabel (al quitarle Custom de TCustomLabel fue que nos ahorramos el 90%
). Esta clase redefine el método Paint que es el que se encarga de pintar la componente. En el método redefinido,
inherited es la llamada al método anterior, es decir, le dice "pinta el Label como ya sabes", y después de eso usas un método del canvas del componente para pintar la elipse. Todo lo que se dibuja en una componente va sobre su canvas.
Espero que con esto le pierdas el miedo, te dejes de pretextos y no te conformes con "lo sencillito". Dicho lo anterior en buen plan.
// Saludos