Главная страницаОбратная связьКарта сайта

Открытие локальных файлов в TWebBrowser и прямое открытие ссылок

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  This example shows how to open local files in a TWebbrowser 
  and start links directly without showing a Dialog. 
}

 { 
  Dieses Beispiel zeigt, wie man lokale Dateien in einem TWebbrowser 
  цffnen kann und wie man lokale Links direct ausfьhren kann ohne 
  dass ein Dialog erscheint. 
}


 unit Unit1;

 interface

 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   StdCtrls, OleCtrls, SHDocVw;

 type
   TForm1 = class(TForm)
     WebBrowser1: TWebBrowser;
     Button1: TButton;
     procedure Button1Click(Sender: TObject);
     procedure WebBrowser1BeforeNavigate2(Sender: TObject;
       const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
       Headers: OleVariant; var Cancel: WordBool);
   private
     FIsStartPage: Boolean;
     { Private declarations }
   public
     { Public declarations }
   end;

 var
   Form1: TForm1;

 implementation

 {$R *.DFM}

 uses
   ShellApi;


 // Open a local page: 
procedure TForm1.Button1Click(Sender: TObject);
 const
  LOCAL_PAGE ="C:/StartPage.htm"
 begin
   FIsStartPage := True;
   Webbrowser1.Navigate("file:///" + LOCAL_PAGE);
   FIsStartPage := False;
 end;


 procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
   const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
   Headers: OleVariant; var Cancel: WordBool);
 var
   newURL: string;
 begin
   newURL := URL;
   // For local links, don"t show a dialog but open the file directly 
  if (not FIsStartPage) and FileExists(newURL) then
   begin
     Cancel := True;
     ShellExecute(Application.Handle, "open", PChar(newURL), nil, nil, SW_NORMAL);
   end;
 end;

Обсудить статью на форуме


Если Вас заинтересовала или понравилась информация по разработке на Delph - "Открытие локальных файлов в TWebBrowser и прямое открытие ссылок", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:

Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!
   


Copyright © 2008 - 2023 Дискета.info