я тоже не мог 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;