Показать сообщение отдельно
  #2  
Старый 13.09.2015, 21:12
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,094
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Сделать свой компонент - наследник от нужного, в нем объявить это свойство, установить новый компонент. И будет тебе счастье.

Вот только вопрос появился. Ну с гридом я еще понимаю, хотя он и так должен отрабатывать скрол мышки, зачем его перегружать не совсем понятно. А вот что ты будешь со скролом делать на кнопке???

ЗЫ. Можно захачить компоненты, если тебе уж так надо сделать это событие, а по полной программе возиться неохота. В 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;

...
Ответить с цитированием