Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.20;
Скачать: CL | DM;

Вниз

Как отобразить страничку, хранящююся в 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.044 c
8-1120145991
Radgar
2005-06-30 19:39
2005.11.20
Разбивание Timage на секции.


6-1123706619
Trojan_nt
2005-08-11 00:43
2005.11.20
Помогите создать статистику DSN Инета


2-1130372472
snowkam1
2005-10-27 04:21
2005.11.20
ftp!!! вот такая проблема


5-1111471930
Leschiy
2005-03-22 09:12
2005.11.20
Помогите с компонентом


14-1130321748
Dashout
2005-10-26 14:15
2005.11.20
предлагается подработка