AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TWebbrowser aus Stream speisen
Thema durchsuchen
Ansicht
Themen-Optionen

TWebbrowser aus Stream speisen

Ein Thema von TBx · begonnen am 31. Okt 2006 · letzter Beitrag vom 1. Nov 2006
Antwort Antwort
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#1

TWebbrowser aus Stream speisen

  Alt 31. Okt 2006, 15:58
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
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: TWebbrowser aus Stream speisen

  Alt 31. Okt 2006, 16:17
Hallo Thomas,

einen von mehreren möglichen Wegen kannst du mit der Funktion LoadDocument() gehen: klick

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#3

Re: TWebbrowser aus Stream speisen

  Alt 31. Okt 2006, 17:32
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;
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#4

Re: TWebbrowser aus Stream speisen

  Alt 1. Nov 2006, 07:09
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
WebBrowser.Navigate ('MyLocalFile') anzeige.
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
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#5

Re: TWebbrowser aus Stream speisen

  Alt 1. Nov 2006, 10:01
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!

  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#6

Re: TWebbrowser aus Stream speisen

  Alt 1. Nov 2006, 11:32
Zitat von Meflin:
Hm? Verstehe ich jetzt nicht ganz. Meine Funktion schreibt einen Stream direkt in einen TWebBrowser, ohne Umweg!
Stimmt, das tut die Funktion. Klappt auch sehr gut.
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 von Meflin:
Also nimmst du eben statt einem FileStream einen MemoryStream, rufst damit die Prozedur auf und fertig!
Ich mache es in diesem Fall mit einem TIB_Blobstream.
Nur kriege ich den TWebbrowser eben dann nicht dazu, festzustellen, was ich ihm da biete und es dann korrekt darzustellen.

Gruß

Thomas
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#7

Re: TWebbrowser aus Stream speisen

  Alt 1. Nov 2006, 11:47
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.
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz