Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

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

Delphi , Интернет и Сети , Браузер

Открытие локальных файлов в 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;

Пример кода на Delphi!

Этот код демонстрирует, как открыть локальные файлы в контроле TWebBrowser без отображения диалога "Открыть файл" при навигации по локальному ссылке.

Объявление модуля и формы

Модуль Unit1 содержит единственную форму TForm1, которая имеет два компонента: контрол TWebBrowser (WebBrowser1) и кнопку TButton (Button1).

Событие клика кнопки

Когда кнопка Button1 нажата, срабатывает процедура Button1Click. Она устанавливает флаг FIsStartPage в значение True, навигирует по локальному HTML-файлу (LOCAL_PAGE) с помощью метода Navigate контрола TWebBrowser, а затем установит FIsStartPage обратно в значение False.

Событие Before Navigate

Срабатывает процедура WebBrowser1BeforeNavigate2 перед навигацией браузера по новой URL. Она проверяет, не является ли навигация начальной страницей (FIsStartPage равно False) и если целевая URL - файл (используя функцию FileExists). Если оба условия истинны, она устанавливает Cancel в значение True, что предотвращает отображение диалога "Открыть файл". Вместо этого она использует функцию ShellExecute из Windows API для открытия файла напрямую.

Альтернативное решение

Если вы хотите более дельфийское решение без использования ShellExecute, можно использовать компонент TFileOpenDialog для открытия файла и затем загрузки его содержимого в веб-браузер.

Вот пример:

procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
var
  newURL: string;
  fileDialog: TFileOpenDialog;
begin
  newURL := URL;
  if not FIsStartPage and FileExists(newURL) then
  begin
    Cancel := True;
    fileDialog := TFileOpenDialog.Create(nil);
    try
      fileDialog.InitialDir := ExtractFilePath(newURL);
      fileDialog.FileName := ExtractFileName(newURL);
      if fileDialog.Execute then
      begin
        WebBrowser1.Navigate('file:///' + fileDialog.FileName);
      end;
    finally
      FreeAndNil(fileDialog);
    end;
  end;
end;

Код использует компонент TFileOpenDialog для открытия файла и загрузки его содержимого в веб-браузер. Обратите внимание, что это решение требует больше кода и менее эффективно, чем использование ShellExecute.

В статье описывается способ открытия локальных файлов в TWebBrowser без возникновения диалогового окна и прямого старта ссылок на локальные файлы.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Браузер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:05:23/0.0057299137115479/1