я тоже не мог TextRange.scrollIntoView(True)работать. ќднако приведенный ниже код, похоже, работает дл¤ документа формата
Line1
Line2
Line3
Line4
line5
...
Ћини¤ 100
если документ не прокручиваетс¤ до точки, котора¤ Line100находитс¤ выше нижней строки в окне браузера. ќн отлично работает, fi, чтобы найти Line20и расположить его в верхней части окна браузера.
ак вы можете видеть, он работает, получа¤ IHTMLTextRangeMetricsинтерфейс от TextRangeи использу¤ его offsetTopсвойство дл¤ прокрутки doc2родительского окна по вертикали.
од:
// doc2 is a field of Form1 of type `IHTMLDocument2`
procedure TForm1.FindText(Text : String);
var
selection: IHTMLSelectionObject;
textRange: IHtmlTxtRange;
scrollpos: Integer;
Metrics : IHTMLTextRangeMetrics;
begin
Selection := Doc2.Selection;
TextRange := selection.createRange as IHTMLTxtRange;
TextRange.collapse(false);
if TextRange.findText(Text, 1, 0) then begin
TextRange.select;
TextRange.scrollIntoView(True);
TextRange.QueryInterface(IHTMLTextRangeMetrics, Metrics);
if Metrics <> Nil then
doc2.parentWindow.scrollBy(0, Metrics.offsetTop);
end;
end;