Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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, из например: "мама <В>мыла</В> раму". То текст "мама", заедет за верхний левый край, оставив для отображения только "мыла раму".
Что не очень то устраивает.


Наверх

Титульная страница Поиск, карта сайта Написать письмо