Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Delphi |
![]() ![]() |
aford Member Откуда: Сообщений: 71 |
Собственно, все в заголовке. Например, у меня на форме лежат ScrollBox и в нем DBGrid и другие компоненты. Если я прокручиваю колесико мыши над таблицей, то прокручивается таблица, а не скроллбокс, это вполне ожидаемо, а вот как передать это событие скроллбоксу? Мне не нужно прокручивать таблицу, разве только что дергать левой кнопкой мыши за скроллбар на ней. Вообще отменить реакцию таблицы на колесико у меня получилось: private FGridWndProc: TWndMethod; procedure DbGridWindowProc(var Msg: TMessage); в OnCreate: FGridWndProc:= DBGrdEhReading.WindowProc; DBGrdEhReading.WindowProc:= DbGridWindowProc; ... procedure TFrmMain.DbGridWindowProc(var Msg: TMessage); begin case Msg.Msg of WM_MOUSEWHEEL: Exit; end; if Assigned(FGridWndProc) then FGridWndProc(Msg); end; Как передать ее в скроллбокс пока не знаю. |
11 окт 18, 17:51 [21701876] Ответить | Цитировать Сообщить модератору |
Соколинский Борис Member Откуда: Москва Сообщений: 9076 |
aford, SetFocus |
11 окт 18, 17:58 [21701886] Ответить | Цитировать Сообщить модератору |
aford Member Откуда: Сообщений: 71 |
Соколинский Борис,case Msg.Msg of WM_MOUSEWHEEL: begin ScrlBxReading.SetFocus; Exit; end; end; Фокус передается, а сообщения о прокрутке нет |
12 окт 18, 09:05 [21702168] Ответить | Цитировать Сообщить модератору |
aford Member Откуда: Сообщений: 71 |
Нашел решение, может кому пригодится, всего-то нужно было дописатьPostMessage(ScrlBxReading.Handle, WM_MOUSEWHEEL, Msg.WParam, Msg.LParam); Полный код: private FGridWndProc: TWndMethod; procedure DbGridWindowProc(var Msg: TMessage); в OnCreate: FGridWndProc:= DBGrdEhReading.WindowProc; DBGrdEhReading.WindowProc:= DbGridWindowProc; ... procedure TFrmMain.DbGridWindowProc(var Msg: TMessage); begin case Msg.Msg of WM_MOUSEWHEEL: begin PostMessage(ScrlBxReading.Handle, WM_MOUSEWHEEL, Msg.WParam, Msg.LParam); Exit; end; end; if Assigned(FGridWndProc) then FGridWndProc(Msg); end; |
12 окт 18, 11:13 [21702290] Ответить | Цитировать Сообщить модератору |
Все форумы / Delphi | ![]() |