Форум: "Начинающим";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
ВнизКак отобразить страничку, хранящююся в BLOB,с помощь WebBrowser? Найти похожие ветки
← →
DancerMan (2005-10-11 13:57) [0]Добрый день!
Вопрос в теме. Можно такое сделать?
Спасибо, за ответы.
← →
Desdechado © (2005-10-11 14:37) [1]выгрузить в файл, после чего натравить TWebBrowser на него
← →
DancerMan (2005-10-11 14:57) [2]А есть вариант без сохранения в файл?
← →
DiamondShark © (2005-10-11 16:29) [3]Есть
(WebBrowser1.DefaultInterface.Document as IPersistStreamInit).Load(TStreamAdapter.Create(TBlobStream.Create(BiolifeTable.FieldByName("Notes") as TBlobField, bmRead), soOwned));
← →
Ptica (2005-10-26 16:30) [4]А если то же самое, но из текстового поля.
← →
Johnmen © (2005-10-27 00:39) [5]>DiamondShark © (11.10.05 16:29) [3]
При такой загрузке из потока можно "нарисовать" такую хтмл"ку, что отображаться она не будет. А будет лишь хтмл код...
← →
SamProf © (2005-10-27 13:13) [6]
> DancerMan (11.10.05 14:57) [2]
>
> А есть вариант без сохранения в файл?
> <Цитата>
> DiamondShark © (11.10.05 16:29) [3]
>
> Есть
>
> (WebBrowser1.DefaultInterface.Document as IPersistStreamInit).
> Load(TStreamAdapter.Create(TBlobStream.Create(BiolifeTable.
> FieldByName("Notes") as TBlobField, bmRead), soOwned));
>
Вот эта веШЧЬ мне очень понравилась. Но у меня есть маленький вопрос - а как это переписать, чтобы грузилось из MemoField?
← →
SamProf © (2005-10-27 13:52) [7]
> (WebBrowser1.DefaultInterface.Document as IPersistStreamInit).
> Load(TStreamAdapter.Create(TBlobStream.Create(BiolifeTable.
> FieldByName("Notes") as TBlobField, bmRead), soOwned));
Даже с BLOB у меня не работает.........(D7)
Пишет Invalid class typecast.....
← →
SamProf © (2005-10-27 14:14) [8]Лови:
// Способ первый
uses
..., ActiveX;
procedure WB_LoadHTML( WebBrowser: TWebBrowser; HTMLCode: string );
var
sl: TStringList;
ms: TMemoryStream;
begin
WebBrowser.Navigate( "about:blank" );
while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
Application.ProcessMessages;
if Assigned( WebBrowser.Document ) then
begin
sl := TStringList.Create;
try
ms := TMemoryStream.Create;
try
sl.Text := HTMLCode;
sl.SaveToStream( ms );
ms.Seek( 0, 0 );
( WebBrowser.Document as IPersistStreamInit ).Load( TStreamAdapter.Create( ms ) );
finally
ms.Free;
end;
finally
sl.Free;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WB_LoadHTML( WebBrowser1, "Ваша строка" );
end;
// Способ второй
uses
..., MSHTML, ActiveX;
procedure TextToWebBrowser( WB: TWebBrowser; Text: string );
var
Document: IHTMLDocument2;
V: OleVariant;
begin
if WB.Document = nil then
WB.Navigate( "about:blank" );
while WB.Document = nil do
Application.ProcessMessages;
Document := WB.Document as IHtmlDocument2;
V := VarArrayCreate( [0, 0], varVariant );
V[0] := Text;
Document.Write( PSafeArray( TVarData(v).VArray ) );
Document.Close;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
TextToWebBrowser( WebBrowser1, "Ваша строка" );
end;
← →
Johnmen © (2005-10-27 16:41) [9]>SamProf ©
Это зачем такое обилие кода?
Всё пишется в 1-2 строки.
И зачем этоwhile WB.Document = nil do
Application.ProcessMessages;
?
:)
← →
SamProf © (2005-10-27 22:13) [10]
> Johnmen © (27.10.05 16:41) [9]
>
> >SamProf ©
>
> Это зачем такое обилие кода?
> Всё пишется в 1-2 строки
Это называется выделлил, вставил! Сам код не смотрел - работает - мне этого пока хватает!
> while WB.Document = nil do
> Application.ProcessMessages;
> ?
нужен для того. чтобы пордождать пока запустится вот такая вот страничка:
about:blank, чтобы заработал нужный протокол WebBrowsera!
Вот такая вот загагулина!
← →
DiamondShark © (2005-10-27 23:19) [11]
> SamProf © (27.10.05 13:13) [6]
>
> Вот эта веШЧЬ мне очень понравилась. Но у меня есть маленький
> вопрос - а как это переписать, чтобы грузилось из MemoField?
(WebBrowser1.DefaultInterface.Document as IPersistStreamInit).
Load(TStreamAdapter.Create(TStringStream.Create(MyMemoField.AsString), soOwned));
> SamProf © (27.10.05 13:52) [7]
>
> Даже с BLOB у меня не работает.........(D7)
>
> Пишет Invalid class typecast.....
Компоненты какие? В примере -- БДЕшные.
Если у тебя какие-нибудь IBExpress или ещё что-нибудь, то типы надо заменить на соответствующие.
← →
DiamondShark © (2005-10-27 23:31) [12]
> Johnmen © (27.10.05 00:39) [5]
> >DiamondShark © (11.10.05 16:29) [3]
>
> При такой загрузке из потока можно "нарисовать" такую хтмл"ку,
> что отображаться она не будет. А будет лишь хтмл код...
Верно.
Первым непробельным символом должен быть тэг <HTML>
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.044 c