Ver Mensaje Individual
  #8  
Antiguo 14-09-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Reputación: 24
maeyanes Va por buen camino
El error de Stack Overflow se da en este método:

Código Delphi [-]
function TProducto.GetOnMouseDown:TMouseEvent;
begin
  Result := OnMouseDown;
end;

Por que, por que estas haciendo llamadas recursivas del mismo método GetOnMouseDown...

Solucion:

Código Delphi [-]
function TProducto.GetOnMouseDown:TMouseEvent;
begin
  Result := sForma.OnMouseDown
end;

Ahora, como estás creando un componente visual, te recomiendo que en lugar de crear un constructor propio, redefinas el de TPanel:

Código Delphi [-]
TProducto = class(TPanel)
  // ...
public
  constructor Create(AOwner: TComponent); override;
end;

implementation

constructor TProducto.Create(AOwner: TComponent);
begin
  inherited;
  // Inicializas tu componente...
end;

Por cierto, los métodos para asignar propiedades deben ser siempre privados, a menos que quieras hacerlos virtuales para que futuros descendientes los puedan redefinir...

Otra observación, el método MostrarMensaje lo declaras como un método abstracto, y al ser un componente visual, esto no es aconsejable, ya que para poder hacer buen uso del componente, tendrías que crear un descendiente que implementara la funcionalidad de MostrarMensaje...


Saludos....
Responder Con Cita