![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TWebBrowser скролинг [D7, XP]
ford © (2016-04-01 11:55:00)Доброго времени суток!
Необходимо проскролировать содержимое TWebBrowser до определенного тэга, но так чтобы элемент был по середине отображаемой области.
В msdn есть описание метода ScrollIntoView для IHTMLElement
https://msdn.microsoft.com/ru-ru/library/system.windows.forms.htmlelement.scrollintoview%28v=vs.110%29.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
От туда в качестве параметра передается либо True, либо False:
Если задано значение true, верхняя часть объекта будет отображаться в верхней части окна. Если задано значение false, нижняя часть объекта будет отображаться в нижней части окна.
Все замечательно работает, т.е. скролирует к этому элементу, но косяк в том что он скролирует его так что элемент прижимается к левому верхнему углу (или к нижнему если False).
Т.е. если я проскролирую к элементу при установленном True, из например: "мама мылараму". То текст "мама", заедет за верхний левый край, оставив для отображения только "мыла раму".
Что не очень то устраивает.
Может кто сталкивался, и в курсе как проскролировать сожержимое TWEbBrowser, но так чтобы элемент до которого производится скролинг, устанавливался посередине отображаемого содержимого окна?
ford (2016-04-01 14:08:00) [1]Сделал так, вроде работает :)
Оформил в виде процедуры, параметром которой выступает IHTMLElement, До которого который надо проскролировать.
Может кому пригодится.
Procedure ScrollToEl(Src:IHTMLElement);
var wnd:IHTMLWindow2;
Height:Integer;
Begin
wnd:=(Src.document as IHTMLDocument2).parentWindow;
Height:=((Src.document as IHTMLDocument2).body as IHTMLElement2).clientHeight;
wnd.scroll(0,Src.offsetTop-(Height div 2));
End;
ford (2016-04-01 11:58:00) [2]Млин, тэги "съелись"
было так:
Т.е. если я проскролирую к элементу <В> при установленном True, из например: "мама <В>мыла</В> раму". То текст "мама", заедет за верхний левый край, оставив для отображения только "мыла раму".
Что не очень то устраивает.