Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.039 c
14-1130257723
Умник
2005-10-25 20:28
2005.11.20
Знаки препинания


1-1130403423
VEZ
2005-10-27 12:57
2005.11.20
Иконки в TreeNode


14-1130308675
Игорь Шевченко
2005-10-26 10:37
2005.11.20
Кто-нибудь из москвичей идет на SEC(R) ?


2-1130492059
VEZ
2005-10-28 13:34
2005.11.20
StrToInt


6-1123562516
DDDeN
2005-08-09 08:41
2005.11.20
Отправка SMS





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский