¡Hola!
Agregaría que un método virtual redefinido que todo lo que hace es llamar a su versión heredada, es innecesario, como es el caso del destructor:
Código Delphi
[-]
destructor TCCDShadow.Destroy();
begin
inherited Destroy();
end;
Por otra parte, en el constructor, la sentencia
Código Delphi
[-]ParentForm:=TForm(AOwner);
asume que el parámetro AOwner es una forma (lo cual está bien para la mayoría de los casos, donde el objeto es agregado a una forma en tiempo de diseño), pero ¿qué tal si el objeto es instanciado en tiempo de ejecución enviándole como parámetro otro tipo de dueño, incluso un Nil? O bien, el objeto es insertado en tiempo de diseño en un módulo de datos.
Concuerdo en que no debe realizarse una operación de dibujo / despliegue desde el constructor. Es prematuro. Loaded se ejecuta cuando ya toda la forma y sus componentes han sido cargados y están listos para la acción (aunque tomando en cuenta que aún no están visibles).
Un abrazo compuesto.
Al González.