Как получать события скроллинга в Memo
interface uses WinAPI.Messages ; type // Используем этот трюк, чтобы получить доступ к protected методам TControl TMyControl = class(TControl); TTestAreaMain = class(TForm) Memo3: TMemo; procedure FormCreate(Sender: TObject); ... private // Наш собственный обработчик событий procedure ScrollHandler(var Message: TMessage); end; implementation procedure TTestAreaMain.FormCreate(Sender: TObject); begin // Заменяем стандартный обработчик TControl.WndProc на наш. Memo3.WindowProc := ScrollHandler; end; procedure TTestAreaMain.ScrollHandler(var Message: TMessage); begin // Если событие - скроллинг... if ((Message.Msg = WM_VSCROLL) or (Message.Msg = WM_HSCROLL)) // и можно реагировать только один раз, когда скроллинг завершился, and (TWMVScroll(Message).ScrollCode = SB_ENDSCROLL) then begin // поделать то, ради чего всё и затевалось. end; // вызвать исходный обработчик для корректного завершения обработки события. TMyControl(Memo3).WndProc(Message); end;
Метки:
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии