![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отобразить страничку, хранящююся в BLOB,с помощь WebBrowser? [D7, FireBird 1.5]
DancerMan © (2005-10-11 13:57:00)Добрый день!
Вопрос в теме. Можно такое сделать?
Спасибо, за ответы.
DiamondShark (2005-10-27 23:31:00) [1]
> Johnmen © (27.10.05 00:39) [5]
> >DiamondShark © (11.10.05 16:29) [3]
>
> При такой загрузке из потока можно "нарисовать" такую хтмл'ку,
> что отображаться она не будет. А будет лишь хтмл код...
Верно.
Первым непробельным символом должен быть тэг <HTML>
DiamondShark (2005-10-27 23:19:00) [2]
> 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 или ещё что-нибудь, то типы надо заменить на соответствующие.
SamProf (2005-10-27 22:13:00) [3]
> Johnmen © (27.10.05 16:41) [9]
>
> >SamProf ©
>
> Это зачем такое обилие кода?
> Всё пишется в 1-2 строки
Это называется выделлил, вставил! Сам код не смотрел - работает - мне этого пока хватает!
> while WB.Document = nil do
> Application.ProcessMessages;
> ?
нужен для того. чтобы пордождать пока запустится вот такая вот страничка:
about:blank, чтобы заработал нужный протокол WebBrowsera!
Вот такая вот загагулина!
Johnmen (2005-10-27 16:41:00) [4]>SamProf ©
Это зачем такое обилие кода?
Всё пишется в 1-2 строки.
И зачем это
while WB.Document = nil do
Application.ProcessMessages;
?
:)
SamProf (2005-10-27 14:14:00) [5]Лови:
// Способ первый
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;
SamProf (2005-10-27 13:52:00) [6]
> (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 13:13:00) [7]
> 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?
Johnmen (2005-10-27 00:39:00) [8]>DiamondShark © (11.10.05 16:29) [3]
При такой загрузке из потока можно "нарисовать" такую хтмл'ку, что отображаться она не будет. А будет лишь хтмл код...
Ptica (2005-10-26 16:30:00) [9]А если то же самое, но из текстового поля.
DiamondShark (2005-10-11 16:29:00) [10]Есть
(WebBrowser1.DefaultInterface.Document as IPersistStreamInit).Load(TStreamAdapter.Create(TBlobStream.Create(BiolifeTable.FieldByName('Notes') as TBlobField, bmRead), soOwned));
DancerMan (2005-10-11 14:57:00) [11]А есть вариант без сохранения в файл?
Desdechado (2005-10-11 14:37:00) [12]выгрузить в файл, после чего натравить TWebBrowser на него