Форум: "Основная";
Текущий архив: 2002.05.13;
Скачать: [xml.tar.bz2];
ВнизTWebBrowser_V1: Как запретить ему показывать страницу Найти похожие ветки
← →
lipskiy (2002-04-22 13:40) [0]Есть встроенный TWebBrowser_V1. Нужно запретить ему показывать стандартную страницу с текстом "Невозможно отобразить страницу" и т.д. Это можно как нить сделать?
← →
lipskiy (2002-04-22 17:03) [1]Очень надо!
← →
Donal_Graeme (2002-04-22 18:43) [2]хм... так сперва определи, есть ли запрашиваемая страница на сервере, а потом делай Navigate :-)
← →
lipskiy (2002-04-22 19:36) [3]Да я на сервер не лезу, я подсовываю сгенеренные в рантайме странички. Т.е. я вообще с инетом не работаю. А он почему-то после правильного отображения моей сгенеренной странички еще секунд 10 че-то думает сам (курсор - стрелка с часиками), и после этого - по своему внутреннему желанию - либо оставит мою страничку, как и положено, либо выкинет "Невозможно отобразить страницу".
Вот код процедуры, с помощью которой я вставляю текст в браузер (текст HTML-старнички):
procedure TextToWebBrowser(Text:string; var WB:TWebBrowser_V1);
var
Document: IHTMLDocument2;
V: OleVariant;
begin
WB.Navigate("new");
(* if WB.Document = nil then WB.Navigate("about:blank")
else WB.Navigate("new"); *)
while WB.Document = nil do begin Application.ProcessMessages; end;
Document := WB.Document as IHtmlDocument2;
V := VarArrayCreate([0, 0], varVariant);
V[0] := Text;
Document.Write(PSafeArray(TVarData(v).VArray));
Document.Close;
end;
← →
Donal_Graeme (2002-04-23 16:56) [4]э.. а Document.Close зачем?
← →
lipskiy (2002-04-23 23:34) [5]А чего, не надо???
Это не я писал, это я взял откуда-то, я в этом сам не шарю.
Ладно, уберу, попробую, только это корректно будет???
← →
lipskiy (2002-04-23 23:37) [6]Не спасло...
← →
Donal_Graeme (2002-04-24 11:14) [7]да я в-общем то тут тоже не спец :-) я просто уточнить хотел :-)
попробуй по простому:
Document.Write (Text);
← →
Donal_Graeme (2002-04-24 11:17) [8]да, и Navigate ("new") я тоже не совсем понимаю...
имхо, можно было бы сделать примерно так (не уверен, конечно) :
WB.Navigate("about:blank");
while WB.Document = nil do Application.ProcessMessages;
Document := WB.Document as IHtmlDocument2;
Document.Write (Text);
← →
lipskiy (2002-04-25 01:06) [9]Строчка
Document.Write (Text);
не компилится - несоответствие типов String и PSafeArray
← →
Donal_Graeme (2002-04-25 10:31) [10]сорри... вот это точно должно скомпилиться (проверял :-) ) :
if WB.Document = nil then WB.Navigate("about:blank");
while WB.Document = nil do Application.ProcessMessages;
OleVariant (WB.Document).Write(Text);
← →
lipskiy (2002-04-25 20:45) [11]Ок, работает также, как и раньше. То есть иногда слетает.
И если делать "about:blank", то начиная со второго раза текст больше не отображается - пустая страница. А вот если "new" то текст железно всегда отображается, но вот иногда через неск. сек. показывает "невозможно отобразить..."
← →
lipskiy (2002-04-25 21:37) [12]Во, нашел вроде верный вариант:
if WB.Document = nil then WB.Navigate("about:blank");
while WB.Document = nil do Application.ProcessMessages;
Document := WB.Document as IHtmlDocument2;
OleVariant (WB.Document).Write(Text);
Document.Close;
WB.Navigate("about:blank") нужно сделать только один раз, иначе будет только белый лист.
Document.Close обязательно нужен, иначе новый HTML-текст добавляется к старому (просто фрейм удлинняется), а не заменяется на новый.
Надо в базу это кинуть.
← →
Лёша (2002-04-26 03:10) [13]Можно проще.
if WB.Document = nil then WB.Navigate("about:blank");
while WB.Document = nil do Application.ProcessMessages;
Document := WB.Document as IHtmlDocument2;
Document.body.InnerHTML:= Text;
Это чтобы при каждом обращении к функции заново документ не открывать и не закрывать.
← →
Donal_Graeme (2002-04-26 10:26) [14]2 lipskiy:
бум знать :-)
← →
lipskiy (2002-04-27 21:15) [15]2 Лёша
Да, действительно, так проще и работает верно, спасибо!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.05.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c