Po prostu ukryj właściwość OnClick. Natomiast w konstruktorze komponentu przypisz do onclick'a swoją procedurkę ktora ma te same parametry co wymaga OnClick. tym sposobem na OnClick wykona się tylko to co ty chcesz a właściwość OnClick nie będzie dostępna na zewnątrz komponentu.
Jeśli chcesz udostępnić zdarzenie onclick i tak to stwórz własny property.
np.:
Type
TMojOnClick = Procedure (Sender: TObject); //to jest to samo co TNotifyEvent, podaje to gdybyś chciał utworzyc wlasny event
TMojaKlasa = class(TImage)
Private
fMojOnClick: TNotifyEvent;
property OnClick;
Procedure Obsluz (Sender: TObject);
Public
constructor Create(AOwner: TComponent); override;
Published
Property MojOnClick: TNotifyEvent read fMojOnClick write fMojOnClick;
end;
Implemetation
Procedure TMojaKlasa.Obsluz (Sender: TObject);
begin
//tutaj twoje działania ktore moga np decydowac o wywolaniu twojego onclicka
if Assigned (fMojOnClick) then fMojOnClick(self);// jeżeli jest przypisana procedura do MojOnClick wywolaj ją z parametrem Self (Self czyli przekazuje wskażnik do samego siebie)
end;
Constructor TMojaKlasa.Create (AOwner: TComponent);
begin
inherited;
OnClick = Obsluz;
end;
Powinno działać