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

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

Вопрос по 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(или другом). Можно платный.


Наверх

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