Aparentemente es porque el diseñador (
Designer) de Delphi le da el nombre al componente después de haberlo instanciado y agregado al formulario. Y esto parece estar afectando de paso al propio título (propiedad Caption) del componente.
Echando un vistazo en el código fuente de la VCL (carpeta C:\Archivos de programa\Borland\Delphi7\Source\VCL), parece ser que todo se debe a la forma en que trabaja el método virtual TControl.SetName (ver Controls.pas):
Código Delphi
[-]
procedure TControl.SetName(const Value: TComponentName);
var
ChangeText: Boolean;
begin
ChangeText := (csSetCaption in ControlStyle) and
not (csLoading in ComponentState) and (Name = Text) and
((Owner = nil) or not (Owner is TControl) or
not (csLoading in TControl(Owner).ComponentState));
inherited SetName(Value);
if ChangeText then Text := Value;
end;
Hay ciertas condiciones que le hacen determinar que el texto del control (en este caso, la propiedad Caption del panel) debe ser igualado al nuevo nombre dado.
Afortunadamente es un método virtual, y eso quiere decir que lo puedes redefinir (
Override) en tu nuevo componente para evitar que suceda eso cuando no lo desees.
Espero te sea de utilidad, no dejes de comentarnos.
Al González.