在 Delphi 中调用 JavaScript(2)

时间:2022-09-29 09:35:34
本例效果图:

在 Delphi 中调用 JavaScript(2)

代码文件:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

uses ComObj;

{此函数需要 ComObj 单元的支持}
{参数 JsCode 是要执行的 Js 代码; 参数 JsVar 是要返回的变量}
function RunJs(const JsCode, JsVar: string): string;
var
script: OleVariant;
begin
try
script := CreateOleObject('ScriptControl');
script.Language := 'JavaScript';
script.ExecuteStatement(JsCode);
Result := script.Eval(JsVar);
except
Result := '';
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
begin
s := RunJs(Memo1.Text, 'str');
ShowMessage(s);
end;

end.


窗体文件:

object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 167
ClientWidth = 244
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poDesktopCenter
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 10
Top = 140
Width = 72
Height = 13
Caption = #35201#36820#22238#30340#21464#37327
end
object Memo1: TMemo
Left = 0
Top = 0
Width = 244
Height = 121
Align = alTop
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Courier New'
Font.Style = []
Lines.Strings = (
'Memo1')
ParentFont = False
ScrollBars = ssBoth
TabOrder = 0
ExplicitWidth = 323
end
object Button1: TButton
Left = 159
Top = 134
Width = 75
Height = 25
Caption = #25191#34892#20195#30721
TabOrder = 1
OnClick = Button1Click
end
object Edit1: TEdit
Left = 85
Top = 136
Width = 61
Height = 21
TabOrder = 2
Text = 'str'
end
end