Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi HTML Text anzeigen (https://www.delphipraxis.net/89500-html-text-anzeigen.html)

dr. love 1. Apr 2007 10:47


HTML Text anzeigen
 
Ich lese in einem Programm ein Stück HTML Text aus einer Datei und speicher diesen als String. Das HTML möchte ich aber (wie in einem Webbrowser) später anzeigen. Irgendwie kann TWebBrowser aber nur HTML über eine URL auslesen. Geht es auch, dass er den Code aus einem String bezieht? (also ohne, dass ich den Strin erst speichere und der Browser die Datei dann öffnet)

Hawkeye219 1. Apr 2007 11:06

Re: HTML Text anzeigen
 
Hallo,

wie das geht, wird auf dieser Seite beschrieben. Vielleicht sind aber auch die HTML Viewer-Komponenten von David Baldwin für dich interessant.

Gruß Hawkeye

oschulz 1. Apr 2007 11:08

Re: HTML Text anzeigen
 
das müsste so aussehen

in die uses muss noch SHDocVw, MSHTML und ActiveX glaube ich

Delphi-Quellcode:
tempBodyStream:=TStringStream.Create(tempbody);
LoadFromStream(ieControl, tempBodyStream);
tempBodyStream.Destroy;


procedure LoadFromStream(Dest:TWebBrowser;const Stream: TStream);
var
  Flags: OleVariant;
  i:integer;
begin
  Flags:=navNoHistory or navNoReadFromCache or navNoWriteToCache;
  if not Assigned(Dest.Document) then
    Dest.Navigate('about:blank',Flags);
  i:=0;
  if Dest.Showing then
    while (Dest.ReadyState <> READYSTATE_COMPLETE) do begin
      Application.ProcessMessages;
      Sleep(1);
      inc(i);
      if i>2500 then break;
  end;

  try
    InternalLoadDocumentFromStream(Dest,Stream);
  except
  end;
end;

procedure InternalLoadDocumentFromStream(Dest:TWebBrowser;const Stream: TStream);
var
  PS: IPersistStreamInit;
  StreamA: TStreamAdapter;
  //Doc:IHTMLDocument2;
  ret:HResult;
begin
  if Dest=nil then exit;
  if not assigned(Dest.Document) then exit;
  //Doc:=Dest.Document as IHTMLDocument2;
  PS:= Dest.Document as IPersistStreamInit;
//  StreamA:=NIL;
  try
    try
      ret := PS.InitNew;
      if SUCCEEDED(ret) then
      begin
        StreamA := TStreamAdapter.Create(Stream);
        PS.Load(StreamA);
      end;
    finally
      //Stream.Free;
      //if StreamA <> nil then IUnknown(StreamA)._Release;
    end;
  finally
    //if PS <> nil then PS._Release;
  end;
end;


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