ScaleRichView page scrolling

General TRichView support forum. Please post your questions here
Post Reply
Posts: 44
Joined: Fri Sep 16, 2005 10:31 am
Location: Cape Town, South Africa

ScaleRichView page scrolling

Post by DXS »

Hi Sergey (or proxy)

We use ScaleRV as a viewer (readonly & hidden caret), however WMPageScroll still attempts to reposition the caret somewhere appropriate, which is unnecessary when not being used, and can lead to list index out of bounds errors, especially when a table is involved.

I did put in a hack that avoids the issue by doing a simple scroll and exit:

CurRVData := RichViewEdit.TopLevelEditor.RVData;
CurItemNo := RichViewEdit.TopLevelEditor.CurItemNo;
CurItemOffs := RichViewEdit.TopLevelEditor.OffsetInCurItem;
Key := Message.wParam;
DeltaY := round(ClientHeight * PAGESCROLLPERCENT / FViewProperty.ZoomPercent);
if (Key = VK_PRIOR) then
DeltaY := -DeltaY;

// [JT] - don't need to reposition the caret if hidden (avoid list index out of bounds errors)
if not CaretVisible then
if (Key = VK_PRIOR) then
SetVScrollPos(GetVScrollPos - (ClientHeight div RichViewEdit.VSmallStep))
SetVScrollPos(GetVScrollPos + (ClientHeight div RichViewEdit.VSmallStep));

LCaretPos := FRVCaretRect.BottomRight;

But it would be better if something similar is done in a future version :mrgreen:
Post Reply