我创建了一个自定义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;
但问题是它在使用键或鼠标滚轮滚动时不会触发。
答案 0 :(得分:5)
TRichEdit
可能是一个尴尬的客户。您需要结合WM_VSCROLL和WM_HSCROLL消息处理EN_VSCROLL和EN_HSCROLL通知消息。
我找到了一篇C ++ Builder文章,展示了所需内容:http://bcbjournal.com/bcbcaq/?loc=edits&caq=29