Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.22;
Скачать: CL | DM;

Вниз

Вопрос по 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
8-1143042841
Sco
2006-03-22 18:54
2006.10.22
Отразить обьект


15-1159441329
Иксик
2006-09-28 15:02
2006.10.22
Откуда берутся дети


15-1159512228
Sergey13
2006-09-29 10:43
2006.10.22
Грузия. Ни у кого нет "живых" сведений от туда? Что там творится?


2-1159978351
Дом
2006-10-04 20:12
2006.10.22
Реестр и бинарные данные


2-1160220937
o_serg
2006-10-07 15:35
2006.10.22
как присвоить файловую переменную