Una forma facil es crear un label arriba del componete TShape.
Otra es crear una clase descendiente de TShape y agregar la propiedad text. Luego en su evento Pain lo escribis.
Algo asi:
Código Delphi
[-]
TMiShape = class (TShape)
private
FText: string;
procedure SetText(value: string);
protected
procedure Paint; override;
public
property Text: string read FText write SetText;
end;
...
procedure TMiShape.Paint;
begin
inherited Paint;
Canvas.TextOut(10,10, FText);
end;
procedure TMiShape.SetText(value: string);
begin
FText := value;
Invalidate;
end;
puede contener errores el codigo pero es la idea.