В бланке приложения Delphi RIO имеется веб-браузер1 с Align = alClient. Содержимое веб-браузера прокручивается, поэтому первая отображаемая строка не является первой строкой содержимого веб-браузера. В этом случае при изменении размера формы первая отображаемая строка веб-браузера изменяется, что создает неудобства.
Я получаю первый отображаемый htmlelement до изменения размера формы и пытаюсь прокрутить этот элемент в поле зрения после завершения изменения размера.
Но первая отображаемая строка все еще изменяется при изменении размера.
FirstDisplayedElement1:IHTMLElement;
// is declared in private section of TFormText
procedure TFormText.FormCanResize(Sender: TObject; var
NewWidth, NewHeight: Integer; var Resize: Boolean);
begin
Resize:=True;
FirstDisplayedElement1 :=
GetFirstDisplayedElement(WebBrowser1);
end;
Function TFormText.GetFirstDisplayedElement(WebBr:TWebBrowser):IHTMLELEMENT;
var
ChildElems :IHTMLElementCOLLECTION;
Element:IHTMLElement;
iHTMLDoc: IHtmlDocument2;
Element2:IHTMLElement2;
ElemRect:IHTMLRect;
i:integer;
begin
Result:=Nil;
if Supports(WebBr.Document, IHtmlDocument2, iHTMLDoc)
then
begin
ChildElems:=(WebBr.Document as IHTMLDocument2).all;
for i := 0 to ChildElems.length - 1 do
begin
Element := ChildElems.item(i, varEmpty) as IHTMLElement;
Element2 := ChildElems.item(i, varEmpty) as
IHTMLElement2;
ElemRect:=Element2.getBoundingClientRect;
if ElemRect.Top > 0 then
begin
Result:=Element;
Exit;
end;
end;
end;
end;
procedure TFormText.FormResize(Sender: TObject);
begin
if FirstDisplayedElement1<> NIL then
FirstDisplayedElement1.scrollIntoView(True);
end;
Как сохранить первую отображаемую строку без изменений?