I have a class that is a descendant of TImage32. I need to use the event like OnMouseMove, so the code assigns my OnMouseMove event in Create(). But if the user installs this component in Delphi and assigns another OnMouseMove event, my event is replaced.
My current solution is to inherit from TCustomImage32 and do not publish the OnMouseMove property (all other properties yes), but create a new OnMouseMove2 property that can be assigned by the user, and the code calls OnMouseMove2 in my assigned OnMouseMove event if OnMouseMove2 is assigned.
Is there a better solution to this problem? To keep the event name for example OnMouseMove and have my own event assigned too?
type
TAudioBezierCurvesInteractive = class (TCustomImage32)
private
FOnMouseMove2: TImgMouseMoveEvent;
procedure ImgMouseMoveEvent(Sender: TObject; Shift: TShiftState; X, Y: Integer; Layer: TCustomLayer);
public
Constructor Create(AOwner: TComponent); override;
published
property OnMouseMove2: TImgMouseMoveEvent read FOnMouseMove2 write FOnMouseMove2;
//* Original published properties
property Align;
property Anchors;
property AutoSize;
etc. ...
constructor TAudioBezierCurvesInteractive.Create(AOwner: TComponent);
begin
inherited;
OnMouseMove := ImgMouseMoveEvent;
end;
procedure TAudioBezierCurvesInteractive.ImgMouseMoveEvent(Sender: TObject; Shift: TShiftState; X, Y: Integer; Layer: TCustomLayer);
begin
...my code here...
if Assigned(FOnMouseMove2) then begin
FOnMouseMove2(Sender, Shift, X, Y, Layer);
end;
end;