Сделать свой компонент - наследник от нужного, в нем объявить это свойство, установить новый компонент. И будет тебе счастье.
Вот только вопрос появился. Ну с гридом я еще понимаю, хотя он и так должен отрабатывать скрол мышки, зачем его перегружать не совсем понятно. А вот что ты будешь со скролом делать на кнопке???
ЗЫ. Можно захачить компоненты, если тебе уж так надо сделать это событие, а по полной программе возиться неохота. В object inpector'е оно не появится, но можно будет назначить туда свой обработчик из кода. Делается так:
1. Дизайнишь форму со всеми нужными тебе компонентами.
2.
До описания класса формы вставляешь создание класса с таким же именем, наследующимся от стандартного с указанием имени модуля.
3. В этом классе объявляешь все нужные тебе события.
4. В OnCreate формы присваиваешь нужные тебе обработчики.
5. Все работает в рантайме.
Выглядит примерно так (имена наверняка попутал, проверь):
Код:
unit MyFrm;
uses
..., StdCtrls, ...;
interface
type
TSpeedButton=class(StdCtrls.TSpeedButton)
private
FMyEvent : TNotifyEvent;
protected
procedure DoMyEvent(var Message : TMessage); message WM_MOUSEWEEL;
public
property OnMyEvent : TNotifyEvent read FMyEvent write FMyEvent;
end;
TMyForm=class(TForm)
SpeedButton1 : TSpeedButton;
...
procedure FormCreate(Sender : TObject);
...
procedure MyEventHandlet(Stnder : TObject);
...
implementation
procedure TSpeedButton.DoMyEvent(var Message : TMessage);
begin
if Assigned(FMyEvent) Then FMyEvent(Self);
end;
procedure TMyForm.FormCreate(Sender : TObject);
begin
SpeedButton1.OnMyEvent := MyEventHandler;
end;
procedure TMyForm.MyEventHandler(Sender : TObject);
begin
ShowMessage('Got event!');
end;
...