Hola,
Siempre que escribas en el Foro diciendo que te aparece un determinado error, por favor, especifica cuál es el mismo, puesto que de ese modo contribuirás a la posible solución que pueda ofrecérsete.
Creo que el error que tienen, en este caso, debe ser un "Access Violation", porque, tú tienes una clase que hereda de "TPanel" e implementas un constructor para tu clase, pero, ¿qué pasa con "TPanel"? Estás tratando de acceder a la propiedad de un objeto que no fue creado aún.
No tengo Delphi ahora mismo a mano, pero, prueba a llamar en el constructor de tu clase al constructor de "TPanel", más o menos así:
Código Delphi
[-]
constructor Tbarco1.crear(dimens,x,y,ancho,alto : integer);
begin
inherited Create;
self.vert := false;
self.dim := dimens;
self.caption := ''; self.pro := Point(0,0);
self.pop := Point(0,0);
end;
Pero, tal como lo expongo tampoco funcionará, porque creo recordar que "TPanel" necesita un "Owner" en su contructor, de tal modo que tendrías que proporcionárselo, ora lo incluyas como parámetro en tu constructor, ora le pases un "nil" como "Owner". Si haces esto último asegúrate de liberar objeto y el "TPanel" en un destructor de tu "TBarco", por ejemplo.
Aún así (disculpa que me enrolle tanto) es posible que no te funcione pasar un "nil" como "Owner" del "TPanel". No lo sé ahora mismo. No lo recuerdo. Prueba a ver, de todos modos y nos dices qué tal.