Форум: "Основная";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
Вниз
Вопрос по TWebBrowser Найти похожие ветки
← →
dmitry kholl (2006-09-14 12:23) [0]Подскажите способ управлят позиционированием (прокруткой) данных на страничке.
У меня в браузере загружены локальные данные в компонент, и при добавлении новых страничка формируется заново. Так вот хотелось что бы я мог ее прокрутить до новых данных.
← →
dmitry kholl (2006-09-14 12:29) [1]И еще вопрос.
Посоветуйте к-н не глючный редактор на основе HTMLEdit(или другом). Можно платный.
← →
palva © (2006-09-14 13:41) [2]Проще всего поставить на страничку якорь <A HREF="#nn"></A>
А к урлу который передается функции Navigate приписать "#nn" и страничка должна прокрутиться так, чтобы якорь находился в окне браузера. Можно прокрутить принудительно вниз и влево, но это вы должны знать на сколько пикселей.
← →
dmitry kholl (2006-09-14 14:12) [3]А как програмно перейти к этому якорю?
← →
palva © (2006-09-14 14:26) [4]Был неправ, надо использовать не 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:38) [5]Спасибо за ответ.
Но я загружаю 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:47) [6]
procedure TForm1.Button2Click(Sender: TObject);
begin
(WebBrowser1.Document as IHTMLDocument2).url := "#02";
end;
← →
dmitry kholl (2006-09-14 14:48) [7]большое спасибо
← →
palva © (2006-09-14 15:43) [8]palva © (14.09.06 14:47) [6]
Что-то таким образом не работает. Подумаю еще.
← →
palva © (2006-09-14 16:09) [9]Вот так работает:
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 16:14) [10]Логический аргумент метода scrollIntoView() определяет, появится ли элемент вверху (true) или внизу (false) окна.
← →
dmitry kholl (2006-09-14 16:26) [11]Большое спасибо. У меня получилось.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.046 c