![]() |
[TWebbrowser] Document und lokale Dateien
Hallo zusammen,
ich benutze folgende Vorgehensweise, um HTML-Inhalte in einem TWebbrowser darzustellen. Das "Document" wird aus Inhalten einer Datenbank zusammengesetzt.
Delphi-Quellcode:
Neben diesen DB-basierten Inhalten gibt es auch einige lokale HTML-, sowie andere verlinkte, lokale Dateien.
procedure TForm1.FormShow(Sender: TObject);
var myDocument:OleVariant; begin if WEB1.Document = nil then WEB1.Navigate('about:blank'); myDocument:=WEB1.Document; myDocument.Clear; myDocument.Write(' Hier soll jetzt zur [url="lokal.html"]lokalen Datei[/url] navigiert werden.</p>'); myDocument.Close; end; Ich schaffe es jetzt aber nicht, mir genau diese lokalen Dateien anzeigen zu lassen. Die Seite wird nicht geöffnet, stattdessen erscheint eine leere Seite mit dem Text "lokal.html". Die Datei liegt im selben Verzeichnis wie die Anwendung. Setzte ich den Link z.B. auf "http://google.de" funktioniert der Link. Gruß Igotcha |
Re: [TWebbrowser] Document und lokale Dateien
Hallo Igotcha,
Hast du es schon mal mit absoluten Pfadangaben probiert? Da das geladene Dokument lokal nicht existiert wird durch die relative Pfadangabe die lokale Datei nicht gefunden. Alternative, falls das auch nicht funktionieren sollte: Ein eigenes Protokoll definieren:
Delphi-Quellcode:
Im OnBeforeNavigate2 Ereignis den Link in den lokalen Link umwandeln.
const
MYPROTOCOL = 'mylocalfile://';
Delphi-Quellcode:
Zuvor wird der Link ins Dokument geladen:
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); begin if Pos(MYPROTOCOL, URL) <> 0 then begin Cancel := True; // Navigation Abbrechen URL := StringReplace(URL, MYPROTOCOL ,'file://',[rfIgnoreCase]); TWebBrowser(Sender).Navigate(URL); end; end;
Delphi-Quellcode:
//...
strLocalFile := MYPROTOCOL + '/C:/test.htm'; myDocument.Write(' Hier soll jetzt zur [url="'+ strLocalFile +'"]lokalen Datei[/url] navigiert werden.</p>'); //... |
Re: [TWebbrowser] Document und lokale Dateien
Hallo Igotcha,
ich hatte ein ähnliches Problem und konnte es mit angabe einer Pfadangabe oben im header lösen: <base href="{ Hier der Pfad deiner Anwendung }" /> Danach führte er auch die relativen Links richtig aus. Gruß Jürgen |
Re: [TWebbrowser] Document und lokale Dateien
Danke euch beiden.
Das mit der base-Angabe im Header funktioniert bei mir nicht, und das Abfangen im "OnNavigate2" wollte ich eigentlich genau vermeiden - geht aber anscheinend nicht anders ;-) Igotcha |
Re: [TWebbrowser] Document und lokale Dateien
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:56 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