我创build了一个具有scrollPos事件的自定义Rich。
所以我有这个代码:
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;
但问题是它不会触发时,使用按键或鼠标滚轮滚动。
TRichEdit在这方面可能是一个尴尬的客户。 您需要结合WM_VSCROLL和WM_HSCROLL消息处理EN_VSCROLL和EN_HSCROLL通知消息。
我找到了一个C ++ Builder文章,显示需要什么: http : //bcbjournal.com/bcbcaq/?loc=edits&caq=29