Ver Mensaje Individual
  #2  
Antiguo 23-05-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
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.
Responder Con Cita