![]() |
TWebBrowser load from String - klappt nur ein mal
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
Ich möchte mir einen selbst gebauten HTML-Code der sich in einem String befindet anzeigen lassen. Da der (T)Webbrowser an solchen Funktionen wie LoadFromStream usw. gespart hat muss man mit einem Trick die Angelegenhet umgehen. Dazu bauen wir uns eine Hilfsklasse:
Delphi-Quellcode:
Leider funktioniert das nur ein mal, danach bekommt man nur eine Leere Seite angezeigt.
// ...
implementation // ... type TWebBrowserHelper = Class private FWebBrowser: TWebBrowser; public constructor Create(const WebBrowser: TWebBrowser); procedure LoadFromStream(const Stream: TStream); procedure LoadFromString(const HTMLText: string); procedure InternalLoadDocumentFromStream( const Stream: TStream); property WebBrowser: TWebBrowser read fWebBrowser; end; constructor TWebBrowserHelper.Create; begin inherited Create; FWebBrowser := WebBrowser; end; procedure TWebBrowserHelper.LoadFromString(const HTMLText: string); var StringStream: TStringStream; begin StringStream := TStringStream.Create(HTMLText); try LoadFromStream(StringStream); finally StringStream.Free; end; end; procedure TWebBrowserHelper.InternalLoadDocumentFromStream( const Stream: TStream); var PersistStreamInit: IPersistStreamInit; StreamAdapter: IStream; begin // Get IPersistStreamInit interface on document object if WebBrowser.Document.QueryInterface(IPersistStreamInit, PersistStreamInit) = S_OK then begin // Clear document if PersistStreamInit.InitNew = S_OK then begin // Get IStream interface on stream StreamAdapter := TStreamAdapter.Create(Stream); // Load data from Stream into WebBrowser PersistStreamInit.Load(StreamAdapter); end; end; end; procedure TWebBrowserHelper.LoadFromStream(const Stream: TStream); begin WebBrowser.Navigate('about:blank'); InternalLoadDocumentFromStream(Stream); end; // ----------------------------------------------------------------------------- var MyBrowser: TWebBrowserHelper; procedure TForm1.Button1Click(Sender: TObject); begin MyBrowser := TWebBrowserHelper.Create(Webbrowser1); try MyBrowser.LoadFromString(Memo1.Text); finally MyBrowser.Free; end; end; Woran kann das liegen ? |
Re: TWebBrowser load from String - klappt nur ein mal
Hallo,
zum Laden eines String nutze ich immer folgende Funktion, hat bisher noch nie versagt:
Delphi-Quellcode:
procedure WB_LoadHTML(WebBrowser: TWebBrowser; HTMLCode: string);
var sl: TStringList; ms: TMemoryStream; flag : OleVariant; begin flag := 0; WebBrowser.Navigate('about:blank', flag,flag,flag,flag); 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; |
Re: TWebBrowser load from String - klappt nur ein mal
In der Tat. Übernommen, danke. :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 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