Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi [TWebbrowser] Document und lokale Dateien (https://www.delphipraxis.net/119681-%5Btwebbrowser%5D-document-und-lokale-dateien.html)

Igotcha 29. Aug 2008 23:30


[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:
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;
Neben diesen DB-basierten Inhalten gibt es auch einige lokale HTML-, sowie andere verlinkte, lokale Dateien.

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

toms 30. Aug 2008 09:35

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:
const
  MYPROTOCOL = 'mylocalfile://';
Im OnBeforeNavigate2 Ereignis den Link in den lokalen Link umwandeln.

Delphi-Quellcode:
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;
Zuvor wird der Link ins Dokument geladen:

Delphi-Quellcode:
//...
strLocalFile := MYPROTOCOL + '/C:/test.htm';
myDocument.Write('

Hier soll jetzt zur [url="'+ strLocalFile +'"]lokalen Datei[/url] navigiert werden.</p>');
//...

Pfoto 30. Aug 2008 09:57

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

Igotcha 30. Aug 2008 19:59

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

omata 30. Aug 2008 21:06

Re: [TWebbrowser] Document und lokale Dateien
 
Hier gab es das Thema auch schon...


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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