您的位置:首页 > Web前端 > JavaScript

Delphi与Javascript的交互

2015-11-26 21:05 597 查看
网络上也有人写了关于Delphi与Javascript的文章,其大多数使用ScriptControl等,均无法达到与Delphi自身融合的效果。我也是在翻阅自己的组件库的时候发现了这个以前收集来的代码。这个主要是使用了Mozilla的Javascript引擎,所以在程序运行的时候必须带上js3215R.dll和msvcr70.dll这两个动态链接库。

现在我们来看一看几个例子:

例程1:

说明:该例程主要是把Javascript代码以字符串的形式内置在Delphi程序代码内,然后与Delphi交互的。

unit Form;

{$I delphi.inc}

interface

uses
Windows, Messages, SysUtils, {$IFDEF D6OR7}Variants, {$ENDIF}Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jsintf;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
FEngine: TJSEngine;
public
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
FEngine := TJSEngine.Create(40000);
FEngine.StartDebugger;

FEngine.Global.AddNativeObject(Edit1, 'edit');
FEngine.Global.AddNativeObject(Button1, 'button');

FEngine.Global.Evaluate('function toggle() { ' +
' edit.Visible = ! edit.Visible;' + // Toggle the visible property on/off
' button.Caption = (edit.Visible ? "Hide" : "Show");' + // Change button
'}');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
FEngine.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
FEngine.Global.Evaluate('toggle()');
end;

end.
------------------------------------------------------------------------------------------------------
例程2:
说明:就是在例程的基础上把Javascript代码放置于Delphi程序外。

unit Form;

{$I delphi.inc}

interface

uses
Windows, Messages, SysUtils, {$IFDEF D6OR7}Variants, {$ENDIF}Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jsintf;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
FEngine: TJSEngine;
FScript: TJSScript;
public
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
FEngine := TJSEngine.Create(40000);
FScript := TJSScript.Create;

FEngine.Global.AddNativeObject(Edit1, 'edit');
FEngine.Global.AddNativeObject(Button1, 'button');

FScript.LoadRaw('script.js'); // Load the javascript code from file
FScript.Execute(FEngine); // Register the function with the JS engine
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
FEngine.Free;
FScript.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
FEngine.Global.Evaluate('toggle()');
end;

end.

Javascript代码如下:
function toggle() {
edit.Visible = ! edit.Visible; // Toggle the visible property on/off
button.Caption = (edit.Visible ? "Hide" : "Show"); // Change button
}

本来还有一个例程我也就不贴了,最后把所有的代码一并打包提供下载,祝大家Enjoy Youself!


点击下载此文件(2.07 MB)
http://www.lsworks.net/article/56.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: