Как поймать событие OnScroll на RichEdit? - PullRequest
2 голосов
/ 30 мая 2011

Я создал собственный Rich, у которого есть событие scrollPos.

поэтому у меня есть этот код:

procedure TCustomRich.WMVScroll(var Msg : TWMVScroll);
begin
  inherited;
  if (Msg.ScrollCode in [SB_THUMBTRACK, SB_THUMBPOSITION]) then
    FScrollY := Msg.Pos;
  if Assigned(OnScroll) then
    OnScroll(Self, FScrollX, FScrollY);
end;

procedure TCustomRich.WMHScroll(var Msg : TWMVScroll);
begin
  inherited;
  if (Msg.ScrollCode in [SB_THUMBTRACK, SB_THUMBPOSITION]) then
    FScrollX := Msg.Pos;
  if Assigned(OnScroll) then
    OnScroll(Self, FScrollX, FScrollY);
end;

но проблема в том, что он не срабатывает при прокрутке с помощью клавиш или колесика мыши.

1 Ответ

5 голосов
/ 30 мая 2011

TRichEdit может быть неудобным клиентом в этом отношении.Вам необходимо обработать уведомления EN_VSCROLL и EN_HSCROLL вместе с сообщениями WM_VSCROLL и WM_HSCROLL.

Я нашел статью C ++ Builder, которая показывает, что необходимо: http://bcbjournal.com/bcbcaq/?loc=edits&caq=29

...