Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-39766
AndreyS
2002-04-28 11:22
2002.05.13
Как принудительно сделать рефреш окна.


3-39657
VAleksey
2002-04-17 09:51
2002.05.13
Еще один (2-а) теоретический вопрос про индексы Paradox.


14-39859
Кандыль
2002-04-03 17:32
2002.05.13
Где в реестре хранится имя папки...


3-39668
Марина
2002-04-17 09:29
2002.05.13
Программное изменение типа поля БД


1-39746
Zuker
2002-04-27 21:25
2002.05.13
Определитель





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский