![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по TWebBrowser
dmitry kholl © (2006-09-14 12:23:00)Подскажите способ управлят позиционированием (прокруткой) данных на страничке.
У меня в браузере загружены локальные данные в компонент, и при добавлении новых страничка формируется заново. Так вот хотелось что бы я мог ее прокрутить до новых данных.
dmitry kholl (2006-09-14 16:26:00) [1]Большое спасибо. У меня получилось.
palva (2006-09-14 16:14:00) [2]Логический аргумент метода scrollIntoView() определяет, появится ли элемент вверху (true) или внизу (false) окна.
palva (2006-09-14 16:09:00) [3]Вот так работает:
procedure TForm1.Button2Click(Sender: TObject);
var hl:IHTMLLocation;
d: IHTMLDocument2;
e: IHTMLElement;
begin
d := WebBrowser1.Document as IHTMLDocument2;
e := d.anchors.item('#02', 0) as IHTMLElement;
e.scrollIntoView(true);
end;
Наверно, это будет работать для обеспечения видимости любого элемента, а не только якоря.
palva (2006-09-14 15:43:00) [4]palva © (14.09.06 14:47) [6]
Что-то таким образом не работает. Подумаю еще.
dmitry kholl (2006-09-14 14:48:00) [5]большое спасибо
palva (2006-09-14 14:47:00) [6]
procedure TForm1.Button2Click(Sender: TObject);
begin
(WebBrowser1.Document as IHTMLDocument2).url := '#02';
end;
dmitry kholl (2006-09-14 14:38:00) [7]Спасибо за ответ.
Но я загружаю HTML непосредственно в компонент (без файла).
procedure LoadBrowser(ABrowser: TWebBrowser; const AHTML: String = ''; AUTONAVIGATE: Boolean = FALSE);
var
Document: IHTMLDocument2;
V: OleVariant;
begin
if AUTONAVIGATE then ABrowser.Navigate('about:blank');
Document := ABrowser.Document as IHtmlDocument2;
V := VarArrayCreate([0, 0], varVariant);
V[0] := AHTML;
Document.Write(PSafeArray(TVarData(v).VArray));
Document.Close;
end;
Как в этом случае выполнить метод Navigate?
palva (2006-09-14 14:26:00) [8]Был неправ, надо использовать не HREF, а NAME. Т. е. пусть у нас есть файл rrrr.htm
<HTML><HEAD></HEAD<BODY>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>0<br>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>0<br>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>0<br>
<A NAME="#01"></A>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>0<br>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>0<br>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>0<br>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>0<br>
<A NAME="#02"></A>
1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>0<br>
</BODY></HTML>
Тогда можно так:
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('D:\C\pascal\rrrr.htm');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('D:\C\pascal\rrrr.htm#01');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
WebBrowser1.Navigate('D:\C\pascal\rrrr.htm#02');
end;
dmitry kholl (2006-09-14 14:12:00) [9]А как програмно перейти к этому якорю?
palva (2006-09-14 13:41:00) [10]Проще всего поставить на страничку якорь <A HREF="#nn"></A>
А к урлу который передается функции Navigate приписать '#nn' и страничка должна прокрутиться так, чтобы якорь находился в окне браузера. Можно прокрутить принудительно вниз и влево, но это вы должны знать на сколько пикселей.
dmitry kholl (2006-09-14 12:29:00) [11]И еще вопрос.
Посоветуйте к-н не глючный редактор на основе HTMLEdit(или другом). Можно платный.