![]() |
TWebbrowser aus Stream speisen
Hallo!
Ich möchte eine TWebBrowser-Komponente ohne Umweg über das Filesystem speisen. Die darzustellenden Daten liegen als Stream vor (Html-Seiten, docs, pdfs etc). Kann mir jemand einen Ansatz vermitteln, wie ich den Stream an die TWebBrowser-Komponente übergebe, ohne den Umweg über das Filesystem zu machen? Gruß Thomas |
Re: TWebbrowser aus Stream speisen
Hallo Thomas,
einen von mehreren möglichen Wegen kannst du mit der Funktion LoadDocument() gehen: ![]() Grüße vom marabu |
Re: TWebbrowser aus Stream speisen
Delphi-Quellcode:
procedure SetHTML(MemoryStream: TMemoryStream; WebBrowser: TWebBrowser);
begin WebBrowser.Navigate('about:blank'); while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do begin Application.ProcessMessages; end; if Assigned(WebBrowser.Document) then begin try MemoryStream.Seek(0, 0); (WebBrowser.Document as IPersistStreamInit).Load (TStreamAdapter.Create(MemoryStream)); finally MemoryStream.Free; end; end; end; |
Re: TWebbrowser aus Stream speisen
Vielen Dank Euch beiden schonmal für die Info.
Das ist noch nicht so ganz das, was ich erreichen möchte. Es ist so, daß ich die Funktionalitäten von TWebbrowser dazu mißbrauche, verschiedene Dateien (gif, tiff, pdf, doc, xls etc) in einem Fenster meines Programmes anzuzeigen. Bisher habe ich das so gelöst, daß ich die Datei (die bei mir im Blobfeld einer Datenbank geparkt ist) über einen Filestream temporär auf die Platte schmeiße und dann mittels
Delphi-Quellcode:
anzeige.
WebBrowser.Navigate ('MyLocalFile')
Ich würde mir hier nur gern den Umweg über das Filesystem sparen. Hat jemand eine Idee, wie bzw. ob das realisierbar ist? Gruß Thomas |
Re: TWebbrowser aus Stream speisen
Hm? Verstehe ich jetzt nicht ganz. Meine Funktion schreibt einen Stream direkt in einen TWebBrowser, ohne Umweg! Also nimmst du eben statt einem FileStream einen MemoryStream, rufst damit die Prozedur auf und fertig!
|
Re: TWebbrowser aus Stream speisen
Zitat:
Ich schreibe jetzt aber z. B. eine PDF-Datei in den Stream. Dann bekomme ich im TWebbrowser dannach eine Darstellung, als hätte ich die PDF-Datei in einem beliebigen Texteditor aufgemacht. Arbeite ich mit dem Navigate, zieht TWebbrowser automatisch das PDF-Viewer-Plugin an und stellt die PDF-Datei richtig dar. Hierzu holt sich TWebbrowser die Infos offenbar direkt aus dem Dateiinhalt, der Dateiname und die Extension sind beliebig austauschbar. Zitat:
Nur kriege ich den TWebbrowser eben dann nicht dazu, festzustellen, was ich ihm da biete und es dann korrekt darzustellen. Gruß Thomas |
Re: TWebbrowser aus Stream speisen
Hi,
dein Browser kann keine pdf Datei darstellen. Wenn du diese auf die Platte schreibst und ein navigate machst, lädt der Browser das Plugin dafür und dieses stellt die Datei dar. Also wirst du wohl den Umweg gehen müssen, wenn es sich um Dateien handelt, die der Browser nicht direkt darstellen kann, denn wenn du ihm einen Stream anbietest bist Du schon an einer Stelle wo nur noch Browser kompatible Daten verarbeitet werden. Gruss Thomas. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz