Описано как вызвать процедуру Delphi из JavaScript кода загруженного в TWebBrowser
В форме есть компонент TWebBrowser в нем подгружена страница страница index.html
Вот код реализующий, что бы при нажатии на ссылку в браузере, сработал procedure test
Пример вызова
В форме есть компонент TWebBrowser в нем подгружена страница страница index.html
<html>
<body>
<a href="external.test()">Вызовы тестовой процедуры</a>
</body>
</html>
Вот код реализующий, что бы при нажатии на ссылку в браузере, сработал procedure test
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, OleCtrls, SHDocVw,
MSHTML, StdCtrls, Buttons;
type
TForm1 = class(TForm)
internet: TWebBrowser;
BitBtn1: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure TForm1.internetBeforeNavigate2(ASender: TObject; const pDisp: IDispatch;
var URL, Flags, TargetFrameName,
PostData, Headers: OleVariant;
var Cancel: WordBool);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
// При создании формы переходим по ссылке
internet.Navigate('file://' + GetCurrentDir + '/html/index.html');
end;
procedure test;
begin
// Показываем сообщение
ShowMessage('123');
end;
// Отлавливаем в browser переход по ссылке
procedure TForm1.internetBeforeNavigate2(ASender: TObject; const pDisp: IDispatch;
var URL, Flags, TargetFrameName,
PostData, Headers: OleVariant;
var Cancel: WordBool);
var
S: String;
begin
// Получаем ссылку
S := URL;
// Сравниваем ссылку с условием
if ( S[1] = 'external.test()' ) then
begin
// Отменяем переход по ссылке
Cancel := True;
// Вызываем процедуру
test;
end
end;
end.
procedure TForm1.internetBeforeNavigate2
ОтветитьУдалить- в этой строчке он пишет что Undeclared identifier: 'TForm1' at line 10
Шо ему надо?
Нужно в Delphi создать проект VLC с формой и по умолчанию она имеет такое название, потом положить на нее компонеyт TWebBrowser
Удалить