![]() |
In den Webbrowser zwei html-Dkumente laden (Design-Modus)
Hallo,
ich bin jetzt langsame am verzweifeln. Ich möchte in den WebBrowser zwei unterschiedliche html-Dokumente im Designmodus laden. Wobei das erste Dokument immer in utf-8 codierung ist und das zweite kann beliebig sein. Mein Problem ist jetzt, wenn ich für das Zweite Dokument eine iso-8859-1 charset habe sind alle Umlaute und Sonderzeichen falsch dargestellt. Die Funktionen die ich zum Einfügen verwende sind:
Delphi-Quellcode:
und:
procedure LoadTextInside(Text : String);
var WebDoc: HTMLDocument; WebBody: HTMLBody; begin WebDoc := WebBrowser1.Document as HTMLDocument; WebBody := WebDoc.body as HTMLBody; WebBody.insertAdjacentHTML('AfterBegin', Text); end;
Delphi-Quellcode:
Ich habe jetzt zwei Lösungsideen, die eine ist, dass ich zuerst das Dokument mit der unbekannten Lodierung lade
procedure LoadHTML(WebBrowser: TWebBrowser; HTMLCode: string);
var sl: TStringList; ms: TMemoryStream; begin 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; und diese dann neucodiere mit dem WebBrowser. Dafür habe ich folgendes gefunden:
Delphi-Quellcode:
Was bei mir jedoch nicht klappt, oder dass der WebBrowser den String auf seine Codierung hin überprüft, während er ihn einfügt.
procedure SetCharSet(AWebBrowser: TWebBrowser; ACharSet: String);
var RefreshLevel: OleVariant; begin IHTMLDocument2(AWebBrowser.Document).Set_CharSet(ACharSet); RefreshLevel :=7; AWebBrowser.Refresh2(RefreshLevel); end; Aber das klappt irgendwie nicht mit insertAdjacentHTML. Kann mir vielleicht jemand dabei helfen?? Ach pasteHTML habe ich auch probiert, hat aber leider auch nicht geklappt:
Delphi-Quellcode:
Grüße,
procedure LoadTextInside(Text : String);
var DisplayServices: IDisplayServices; Caret: IHTMLCaret; p : TagPoint; Range : IHTMLTxtRange; begin (WebBrowser1.Document as IHTMLDocument2).QueryInterface(IID_IDisplayServices, DisplayServices); if assigned(DisplayServices) then begin // DisplayServices.GetCaret(Caret); // Caret.GetLocation(P, 0); Range := ((WebBrowser1.Document as IHTMLDocument2).body as IHTMLBodyElement).createTextRange; Range.collapse(False); Range.pasteHTML((Text)); end; end; KM |
Re: In den Webbrowser zwei html-Dkumente laden (Design-Modus
Zitat:
Gruss Capo |
Re: In den Webbrowser zwei html-Dkumente laden (Design-Modus
Hallo,
nein einfach nach einander. Aber ich bin jetzt drauf gekommen, wie es geht. Ich lade zuerst das unbekannte Dokument mit LoadHTML. Danach konvertiere ich mein Unicode-Teil und füge dies am Anfang mit:
Delphi-Quellcode:
ein. Bis jetzt scheint damit alles zu klappen...
procedure LoadTextInside(Text : WideString);
var DisplayServices: IDisplayServices; Caret: IHTMLCaret; p : TagPoint; Range : IHTMLTxtRange; begin (WebBrowser1.Document as IHTMLDocument2).QueryInterface(IID_IDisplayServices, DisplayServices); if assigned(DisplayServices) then begin Range := ((WebBrowser1.Document as IHTMLDocument2).body as IHTMLBodyElement).createTextRange; Range.collapse(True); Range.pasteHTML((Text)); end; end; km |
Re: In den Webbrowser zwei html-Dkumente laden (Design-Modus
Prima :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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