RESPONDER UNA PREGUNTA

Si para responder la pregunta, crees necesario enviar un archivo adjunto, puedes hacerlo a traves del correo [email protected]

    Pregunta:  65892 - ERROR AL INTENTAR USAR UN EVENTO EN UN CONTROL PROPIO.
Autor:  Sergio Garcia
Hola. Hice en Delphi (v6) un “custom component” que tiene más o menos la estructura (un control, q a su vez tiene otro dentro) mas abajo descrita. La compilación e instalación del nuevo componente (TeMyCtrl) no tiene problemas; el problema se da EN EL USO de su evento OnChange (en una aplicación que usa dicho control): siempre provoca el error “Error reading MyCtrl.OnChange: Property Onchange does not exist”. No logro solucionar ese problema; si no uso el evento (aparece publicado en "diseño") todo funciona OK. ¿Hay algo que pasé por alto?
La lógica aplicada es que un evento ocurrido en control interno (el OnChange del TeInnerCtrl) dispare el evento del componente padre (DoOnChange).

Gracias de antemano.
Salu2,
                Sergio

-------------------------------------

TeInnerCtrl = class;
TeMyCtrl = class(TCustomPanel)
private
:
InnerCtrl : TeInnerCtrl;
FOnChange : TNotifyEvent;
:
protected
:
procedure DoOnChange; virtual;
:
public
:
constructor Create(AOwner : TComponent); override;
:
published
property OnChange : TNotifyEvent read FOnChange write FOnChange;
end;

TeInnerCtrl = class(TCustomListView)
private
:
protected
:
procedure eInnerCtrlChange(Sender: TObject);
:
public
:
constructor Create(AOwner: TComponent); override;
:
published
:
end;

//*** TeMyCtrl

constructor TeMyCtrl.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
:
if NOT Assigned(InnerCtrl) then begin
InnerCtrl := TeInnerCtrl.Create(Self);
:
end;
end;

procedure TeMyCtrl.DoOnChange;
begin
inherited;
if Assigned(FOnChange) then
FOnChange(Self);
end;

//******** TeInnerCtrl

constructor TeInnerCtrl.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
:
OnChange := eInnerCtrlChange;
end;

procedure TeInnerCtrl. eInnerCtrlChange (Sender: TObject);
begin
inherited;
:
if (Parent is TeMyCtrl) then
(Parent as TeMyCtrl ).DoOnChange;
end;

:
:


Nombre
Apellidos
Correo
Comentarios