Moin, Moin.
Bin mir nicht sicher, das ich deine Frage so recht verstanden habe.
Du sicherst+restaurierst die Caret-Position.
Aber zusätzlich soll die oberste Zeile auch restauriert werden?
Wenn ja, dann sollte dieses helfen:
Delphi-Quellcode:
function reGetVerScrollPos(re:TRichEdit):Integer;
begin
Result:=GetScrollPos(re.Handle,SB_Vert);
end;
procedure reSetVerScrollPos(re:TRichEdit;Position:Integer);
begin
SetScrollPos(re.Handle,SB_Vert,Position,true);
re.Perform(WM_VScroll,Position shl 16+SB_ThumbTrack,0)
end;