Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Zur Laufzeit erzeugter HTML-Code in TWebbrowser darstellen (https://www.delphipraxis.net/48586-zur-laufzeit-erzeugter-html-code-twebbrowser-darstellen.html)

MrKnogge 27. Jun 2005 17:54


Zur Laufzeit erzeugter HTML-Code in TWebbrowser darstellen
 
Hallo !

ist es möglich einen zur laufzeit erzeugten Code im TWebbrowser (oder einer ähnlichen Komponennte) anzuzeigen, ohne ihn temporär auf der platte zu speichern ?

gruss

Delphi-Freak 27. Jun 2005 18:00

Re: Zur Laufzeit erzeugter HTML-Code in TWebbrowser darstell
 
Naja, ich habe das irgendwann so gemacht:
Delphi-Quellcode:
procedure LoadCode(HTMLCode: string);
var
   sl: TStringList;
   ms: TMemoryStream;
begin
   WebBrowser1.Navigate('about:blank');
   while WebBrowser1.ReadyState < READYSTATE_INTERACTIVE do
      Application.ProcessMessages;

   if Assigned(WebBrowser1.Document) then begin
      sl := TStringList.Create;
      try
         ms := TMemoryStream.Create;
         try
            sl.Text := HTMLCode;
            sl.SaveToStream(ms);
            ms.Seek(0, 0);
            (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
         finally
            ms.Free;
         end;
      finally
         sl.Free;
      end;
   end;
end;
Ist zwar schon länger her, vielleicht gibts auch eine bessere Methode, aber damals hats funktioniert (obwohl ich den Code, wenn ich mich richtig erinnere, damals gar nicht richtig verstanden habe :mrgreen: )


LG, Delphi-Freak


Edit: Irgendwie fällt mir da zwar auf, dass TStreamAdapter nur createt aber nicht gefreet wird. Ev. sollte man da eine weitere Variable einführen (vom Typ TStreamAdapter) und die danach dann freeen :gruebel:

MrKnogge 27. Jun 2005 19:40

Re: Zur Laufzeit erzeugter HTML-Code in TWebbrowser darstell
 
Kannst du mir noch sagen, welche Unit ich für
Delphi-Quellcode:
IPersistStreamInit
einbinden muss ?

gruss

Delphi-Freak 27. Jun 2005 19:48

Re: Zur Laufzeit erzeugter HTML-Code in TWebbrowser darstell
 
Könnte das »SHDocVw_TLB« sein? Wie gesagt, es ist schon einige Zeit her und inzwischen verwende ich d2k5 Personal, der den TWebBrowser nicht kennt. Aber ich denke das das die^^ ist. Ich hoffe die gibts bei dir auch. :gruebel:

LG

MrKnogge 27. Jun 2005 19:57

Re: Zur Laufzeit erzeugter HTML-Code in TWebbrowser darstell
 
SHDocVw_TLB gibt's bei mir nicht :cry:

Luckie 27. Jun 2005 20:06

Re: Zur Laufzeit erzeugter HTML-Code in TWebbrowser darstell
 
Ist ein ActiveX, was du wohl importieren musst.

Delphi-Freak 27. Jun 2005 20:09

Re: Zur Laufzeit erzeugter HTML-Code in TWebbrowser darstell
 
*gr* Luckie war schneller :evil:

Aber ich bin wieder auf den Thread von damals, wo ich das Problem gehabt habe gestoßen:
http://www.delphipraxis.net/internal...ct.php?t=36496

LG, Delphi-Freak

MrKnogge 27. Jun 2005 20:31

Re: Zur Laufzeit erzeugter HTML-Code in TWebbrowser darstell
 
:bounce2: thx, klappt wunderbar !

Delphi-Quellcode:
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,'<center>Delphi-Praxis rules</center>');
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:08 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