Delphi 7 - Обработка событий MouseWheel для встроенных фреймов в формах?

Привет, у меня есть форма с несколькими фреймами внутри.

Для некоторых фреймов я хочу прокрутить содержимое (или, по крайней мере, обработать событие колеса мыши).

Я пробовал следующее:

Простое назначение обработчика события OnMouseWheel для каждого кадра

Переопределение события MouseWheel для родительской формы:

procedure TFmReview.MouseWheelHandler(var Message: TMessage);
var   Control: TControl;
begin
    Control := ControlAtPos(ScreenToClient(SmallPointToPoint(TWMMouseWheel(Message).Pos)), False, True);
    if Assigned(Control) and (Control <> ActiveControl) then
    begin
         ShowMessage(Control.Name);
         Message.Result := Control.Perform(CM_MOUSEWHEEL, Message.WParam, Message.LParam);
         if Message.Result = 0 then
            Control.DefaultHandler(Message);
     end else inherited MouseWheelHandler(Message);
end;

К сожалению, оба варианта не работают.

  • В случае 1 событие никогда не запускается, однако запускается обработчик колеса мыши родительской формы.
  • В случае 2 элемент управления, который получает фокус, - это панель, содержащая фрейм, в который я хочу отправить событие колеса мыши.

Проще говоря, как я могу направить событие колеса мыши на самый верхний элемент управления, над которым находится курсор мыши (независимо от того, в каком фрейме / родительском элементе / форме и т. Д. Находится курсор)?

6
задан menjaraz 23 July 2012 в 14:37
поделиться