![]() |
Eigenen HTML-Code in TWebbrowser einfügen
Hallo Leute,
mit folgendem Code lese ich die Anzahl der Formulare einer Seite aus:
Delphi-Quellcode:
Damit der Anwender sofort sieht, welches Formular auszufüllen ist, möchte ich den HTML-Code der aufgerufenen Seite so verändern, dass die "Formularnummer" im Webbrowser angezeigt wird.
function WebFormGet(const formNumber: integer; const document: IHTMLDocument2): IHTMLFormElement;
var forms : IHTMLElementCollection; begin forms := document.Forms as IHTMLElementCollection; result := forms.Item(formNumber,'') as IHTMLFormElement end; Der HTML-Code sollte wie folgt erweitert werden: Bei form(0) sollte an der entsprechenden Stelle im HTML-Code statt bisher "<form" nun neu "<h1><span style="background-color: rgb(255, 255, 0); font-size: larger; font-family: Arial; color: rgb(0, 0, 0);">Formular 1</span></h1> <form" stehen. Bei form(1) --> alt: "<form" ersetzen mit: "<h1><span style="background-color: rgb(255, 255, 0); font-size: larger; font-family: Arial; color: rgb(0, 0, 0);">Formular 2</span></h1> <form" Bei form(2) --> alt: "<form" ersetzen mit: "<h1><span style="background-color: rgb(255, 255, 0); font-size: larger; font-family: Arial; color: rgb(0, 0, 0);">Formular 3</span></h1> <form" .. usw. Wie kann jetzt ich den zusätzlichen HTML-Code an der richtigen Stelle einfügen? Schönen Gruß HS |
Re: Eigenen HTML-Code in TWebbrowser einfügen
Willkommen in der DP :dp:
Wo genau liegt denn dein Problem? Handelt es sich um eine Seite, die du aus dem Internet lädst? Wenn ja, dann könnte es IMHO Schwierigkeiten geben. Generell hätte ich vorgeschlagen, die Seite ersteinmal zu speichern und dann in eine StringList zu laden. Anschließend kannst du die Zeilen in einer Schleife durchgehen und die entsprechenden Stellen ersetzen. Dabei sollten dir die Stichwörter ![]() ![]() ![]() Als nächstes musst du die neu erstellte Seite in der WebBrowser-Komponente laden, da sollte Navigate genügen. Wenn es sich jedoch um eine Internet-Seite handelt, die dann sicherlich auch auf andere Inhalte im Internet (Grafiken, Stylesheets, JavaScript-Dateien, andere Seiten,...) verweist, dann könntest du meiner Meinung nach nur versuchen, per Base-Befehl im Head-Bereich der HTML-Datei das Basis-Verzeichnis auf die entsprechende URL zu setzen. Eine dabei auftretende Problematik findest du in meinem Thread von ![]() mfg |
Re: Eigenen HTML-Code in TWebbrowser einfügen
Hallo Patti,
vielen Dank für Deine Antwort, die mir schon sehr weitergeholfen hat. Ich lese nun also die aus dem Internet geladene Seite ein:
Delphi-Quellcode:
Dann bearbeite ich den HTML-Code mit PosEx und lade den geänderten Code wieder in den Browser:
function WB_GetHTMLCode(WebBrowser: TWebBrowser; ACode: TStrings): Boolean;
var ps: IPersistStreamInit; ss: TStringStream; sa: IStream; s: string; begin ps := WebBrowser.Document as IPersistStreamInit; s := ''; ss := TStringStream.Create(s); try sa := TStreamAdapter.Create(ss, soReference) as IStream; Result := Succeeded(ps.Save(sa, True)); if Result then ACode.Add(ss.Datastring); finally ss.Free; end; end;
Delphi-Quellcode:
Dabei gehen natürlich die Verweise zu den anderen Dateien verloren. Die von Dir vorgeschlagene Variante das Basis-Verzeichnis zu ändern, habe ich jetzt noch nicht probiert, aber das ist für mein Vorhaben auch nicht wirklich praktikabel. Hast Du die Problematik mit den internen Links lösen können (Sicherheitseinstellung IE)?
procedure WBLoadHTML(WebBrowser: TWebBrowser; HTMLCode: string; Ziel: string);
var sl: TStringList; ms: TMemoryStream; begin WebBrowser.Navigate(Ziel) ; while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do Application.ProcessMessages; 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 eine andere Möglichkeit statischen HTML-Code einzubetten existiert nicht? Schönen Gruß HS |
Re: Eigenen HTML-Code in TWebbrowser einfügen
Doch, mit einem proxy-server
|
Re: Eigenen HTML-Code in TWebbrowser einfügen
Zitat:
Das in meinem anderen Thread beschriebene Problem entsteht soweit ich weiß nur, wenn das Base-Verzeichnis mit einer FILE-Angabe gesetzt wird, nicht jedoch, wenn du eine HTTP-Angabe machst. Die Problematik mit den internen Links habe ich leider noch nicht lösen können, hoffe noch immer auf eine Antwort in dem anderen Thread. Probiere doch einfach mal aus, das Basis-Verzeichnis zu setzen (mit einer HTTP-Angabe). mfg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08: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