![]() |
HTML in TWebBrowser injizieren
Hi,
ich hab in einer String-Variable eine komplette, kleine HTML-Seite, die ich gerne in den TWebBrowser injizieren würde, damit dieser die HTML-Seite korrekt darstellt. Gibt es da eine Möglichkeit dafür? mfG, Manuel :hi: |
Re: HTML in TWebBrowser injizieren
Klar, Navigate auf about:deinhtmlstring
mfg, Björn |
Re: HTML in TWebBrowser injizieren
Supi! Vielen Dank :)
|
Re: HTML in TWebBrowser injizieren
Hallo ihr zwei,
das funktioniert nur solange, wie das übergebene markup nicht das size limit (1.024) für URLs sprengt. Sicherer ist es das Dokument direkt zu schreiben. Es gibt da viele Wege, aber der vom Quellcode her primitivste ist sicher der hier:
Delphi-Quellcode:
Getippt und nicht getestet.
procedure LoadDocumentFromStrings(doc: OleVariant; s: TStrings; url: string = 'about:blank');
var i: Integer; begin doc.Open(url, '_blank'); doc.Clear; for i := 0 to Pred(s.Count) do doc.WriteLn(s[i]); doc.Close; end; Grüße vom marabu |
Re: HTML in TWebBrowser injizieren
Hi marabu,
Deine Version werde ich später auch mal testen, da ich denke, dass ich über das size limit kommen werde. |
Re: HTML in TWebBrowser injizieren
Hi marabu,
ich hab es eben getestet, leider funktioniert es nicht:
Delphi-Quellcode:
Fehlermeldung:
procedure TfrmMain.Vorschau1Click(Sender: TObject);
var frmPreview: TfrmPreview; tmp: String; begin frmPreview := TfrmPreview.Create(Application); tmp := '<html><head></head><body>'; tmp := tmp + TConverter.ConvertBBtoHTML(reEditor.Text); tmp := tmp + '</body></html>'; try frmPreview.wbBrowser.OleObject.Open('about:blank', '_blank'); frmPreview.wbBrowser.OleObject.Clear; frmPreview.wbBrowser.OleObject.WriteLn(tmp); frmPreview.wbBrowser.OleObject.Close; frmPreview.ShowModal; finally frmPreview.Free; end; end;
Code:
---------------------------
Benachrichtigung über Debugger-Exception --------------------------- Im Projekt Projekt1.exe ist eine Exception der Klasse EOleError mit der Meldung 'Die Methode 'Open' wird vom Automatisierungsobjekt nicht unterstützt' aufgetreten. --------------------------- Anhalten Fortsetzen Hilfe --------------------------- |
Re: HTML in TWebBrowser injizieren
Erstelle doch eine Seite ohne Inhalt mit about: und ändere dann die Eigenschaft innerText des Body Elements.
|
Re: HTML in TWebBrowser injizieren
Code:
---------------------------
Benachrichtigung über Debugger-Exception --------------------------- Im Projekt Projekt1.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 0046D077 in Modul 'Projekt1.exe'. Lesen von Adresse 00000000' aufgetreten. --------------------------- Anhalten Fortsetzen Hilfe ---------------------------
Delphi-Quellcode:
Das klappt leider auch nicht. :-?
procedure TfrmMain.Vorschau1Click(Sender: TObject);
var frmPreview: TfrmPreview; tmp: String; begin frmPreview := TfrmPreview.Create(Application); tmp := tmp + TConverter.ConvertBBtoHTML(reEditor.Text); try frmPreview.wbBrowser.Navigate('about:<html><head></head><body></body></html>'); frmPreview.wbBrowser.OleObject.Document.Body.InnerHtml := tmp; frmPreview.ShowModal; finally frmPreview.Free; end; end; |
Re: HTML in TWebBrowser injizieren
Hi nochmal,
ich mach es jetzt anders: Ich speichere die Datei ab und navigiere per .Navigate auf die Datei. |
Re: HTML in TWebBrowser injizieren
Hallo Muhkuh
Unter ![]() |
Re: HTML in TWebBrowser injizieren
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Manuel,
Zitat:
Delphi-Quellcode:
Freundliche Grüße
procedure TDemoForm.PageControlChange(Sender: TObject);
begin with Sender as TPageControl do if ActivePageIndex = 1 then LoadDocumentFromStrings(WebBrowser.Document, Memo.Lines); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:49 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