Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi In den Webbrowser zwei html-Dkumente laden (Design-Modus) (https://www.delphipraxis.net/78304-den-webbrowser-zwei-html-dkumente-laden-design-modus.html)

Koma-Code 2. Okt 2006 20:38


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:
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;
und:

Delphi-Quellcode:
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;
Ich habe jetzt zwei Lösungsideen, die eine ist, dass ich zuerst das Dokument mit der unbekannten Lodierung lade
und diese dann neucodiere mit dem WebBrowser. Dafür habe ich folgendes gefunden:

Delphi-Quellcode:
procedure SetCharSet(AWebBrowser: TWebBrowser; ACharSet: String);
 var
  RefreshLevel: OleVariant;
begin
 IHTMLDocument2(AWebBrowser.Document).Set_CharSet(ACharSet);
 RefreshLevel :=7;
 AWebBrowser.Refresh2(RefreshLevel);
end;
Was bei mir jedoch nicht klappt, oder dass der WebBrowser den String auf seine Codierung hin überprüft, während er ihn einfügt.
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:
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;
Grüße,

KM

capo 3. Okt 2006 00:01

Re: In den Webbrowser zwei html-Dkumente laden (Design-Modus
 
Zitat:

ch möchte in den WebBrowser zwei unterschiedliche html-Dokumente im Designmodus laden.
In einem Frame?
Gruss Capo

Koma-Code 3. Okt 2006 00:15

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:
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;
ein. Bis jetzt scheint damit alles zu klappen...

km

capo 30. Okt 2006 22:43

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