Hallo!
Also die erste Möglichkeit ist doch gut!
Die zweite Methode wäre umständlich, denn Du müsstest das TShape-Objekt ja auch noch in einem OnCreate Konstruktor extra initialisieren. Zudem müsstest Du beim Aufruf jeweils noch das s einfügen:
ShapeVariable.s.Irgendwas
Die erste Methode ist die, die man normalerweise verwendet, wenn man eine Komponente erstellen will. Es gibt übrigens die Möglichkeit sich das Gerüst einer neuen Komponente erstellen zu lassen.
Dazu gehst Du auf "Komponente" -> "Neue Komponente" und wählst aus, von welchem Typ die Komponente abgeleitet werden soll, hier also TShape. Dann hast Du schon mal alles, was in der Unit stehen muss, und Du musst "nur" noch deine Neuerungen machen. (Es wird hauptsächlich das erstellt, was Du geschrieben hast, aber Du hast dann auch schon die Register Methode.)
MfG,
S.J.