I looked at the TShape.Paint method, it is not very friendly for overwriting. You certainly must repeat copying the Pen and Brush to the Canvas; you may also want the half-pen widths PenInc and PenDec to avoid clipping of the half line width when the lines reach the control bounds. And, depending on how flexible you want your component to be, you should also fire the OnPaint event at the end.
Be careful with the TShapeType. It already exists in the inherited component as published property Shape. So, when you add a new ShapeType property you still have the inherited Shape - which one will win when the user sets Shape to stRectangle and ShapeType to stCircle? Basically you should remove the property Shape, so that there is only your ShapeType. But Shape is published, and it is not possible to reduce its visiblity. It is possible to hide it in the object inspector, but you still can access it at runtime...
One solution could be to keep both properties: the original Shape: TShapeType = (stRectangle..stStar) and your OverrideShape: TShapeTypeExt = (stNormal, stLine, etc). The option stNormal would mean that one of the original Shape types should be used for drawing. Not very nice...
The other solution is not very satisfying either: Since TShape is rather simple you could rewrite it from scratch, copying everything that you need and replace the TShape by your extended shape types. But doing this you will have the same mess.
Writing a component descending from TShape is not a very instructive exercise...