Главная страница
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.033 c
4-1149491795
Kirill.info
2006-06-05 11:16
2006.10.22
ScanLine жуткие тормаза


15-1159451520
Oldman
2006-09-28 17:52
2006.10.22
Мудры были предки... (Трудно быть богом ©)


4-1149041613
Delphi5.01
2006-05-31 06:13
2006.10.22
ошибка в уничтожении потока Delphi+Thread+TerminateThread


3-1156418446
Виталий Юрьевич
2006-08-24 15:20
2006.10.22
ADO_TABLE и DBGRID - проблема с отображением информации


2-1160132776
andrey44
2006-10-06 15:06
2006.10.22
Flat Memory as Dynamic array