Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi HTML in TWebBrowser injizieren (https://www.delphipraxis.net/92885-html-twebbrowser-injizieren.html)

Die Muhkuh 28. Mai 2007 12:24


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:

arbu man 28. Mai 2007 12:37

Re: HTML in TWebBrowser injizieren
 
Klar, Navigate auf about:deinhtmlstring

mfg, Björn

Die Muhkuh 28. Mai 2007 12:41

Re: HTML in TWebBrowser injizieren
 
Supi! Vielen Dank :)

marabu 28. Mai 2007 12:59

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:
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;
Getippt und nicht getestet.

Grüße vom marabu

Die Muhkuh 28. Mai 2007 13:20

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.

Die Muhkuh 28. Mai 2007 14:10

Re: HTML in TWebBrowser injizieren
 
Hi marabu,

ich hab es eben getestet, leider funktioniert es nicht:

Delphi-Quellcode:
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;
Fehlermeldung:
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  
---------------------------

arbu man 28. Mai 2007 14:33

Re: HTML in TWebBrowser injizieren
 
Erstelle doch eine Seite ohne Inhalt mit about: und ändere dann die Eigenschaft innerText des Body Elements.

Die Muhkuh 28. Mai 2007 14:40

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:
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;
Das klappt leider auch nicht. :-?

Die Muhkuh 28. Mai 2007 14:45

Re: HTML in TWebBrowser injizieren
 
Hi nochmal,

ich mach es jetzt anders: Ich speichere die Datei ab und navigiere per .Navigate auf die Datei.

toms 28. Mai 2007 15:06

Re: HTML in TWebBrowser injizieren
 
Hallo Muhkuh

Unter diesem Thread findest du weitere Möglichkeiten, ohne dabei den Code von einer Datei yu laden.

marabu 28. Mai 2007 15:49

Re: HTML in TWebBrowser injizieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Manuel,

Zitat:

Zitat von Die Muhkuh
... ich hab es eben getestet, leider funktioniert es nicht: ...

dein Code nicht, meiner schon - du machst ja auch was ganz anderes. So muss es aussehen:

Delphi-Quellcode:
procedure TDemoForm.PageControlChange(Sender: TObject);
begin
  with Sender as TPageControl do
    if ActivePageIndex = 1 then
      LoadDocumentFromStrings(WebBrowser.Document, Memo.Lines);
end;
Freundliche Grüße


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