AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi In den Webbrowser zwei html-Dkumente laden (Design-Modus)
Thema durchsuchen
Ansicht
Themen-Optionen

In den Webbrowser zwei html-Dkumente laden (Design-Modus)

Ein Thema von Koma-Code · begonnen am 2. Okt 2006 · letzter Beitrag vom 30. Okt 2006
Antwort Antwort
Koma-Code
(Gast)

n/a Beiträge
 
#1

In den Webbrowser zwei html-Dkumente laden (Design-Modus)

  Alt 2. Okt 2006, 20:38
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
  Mit Zitat antworten Zitat
capo

Registriert seit: 7. Jul 2006
453 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 3. Okt 2006, 00:01
Zitat:
ch möchte in den WebBrowser zwei unterschiedliche html-Dokumente im Designmodus laden.
In einem Frame?
Gruss Capo
Hotte
  Mit Zitat antworten Zitat
Koma-Code
(Gast)

n/a Beiträge
 
#3

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

  Alt 3. Okt 2006, 00:15
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
  Mit Zitat antworten Zitat
capo

Registriert seit: 7. Jul 2006
453 Beiträge
 
Delphi 11 Alexandria
 
#4

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

  Alt 30. Okt 2006, 22:43
Prima
Hotte
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz