You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TMS WEB Core中通过JavaScript调用Delphi过程?

从JavaScript调用Delphi WebForm公共过程的方法

Delphi WebForm的公共过程运行在服务器端,客户端JavaScript无法直接调用,必须通过AJAX回调机制触发执行。以下是具体实现步骤:

一、在Delphi中配置可被JS调用的方法

根据你使用的Web框架选择对应方式:

1. 基于IntraWeb框架

在表单的OnCreate事件中,将目标方法注册为外部可调用的回调:

procedure TfrmMain.IWFormCreate(Sender: TObject);
begin
  // 注册方法:第一个参数是JS中使用的调用名称,第二个是Delphi过程
  IWForm.RegisterExternalMethod('CallMyDelphiProc', MyDelphiProcedure);
end;

2. 基于Delphi ASP.NET WebForm

给公共过程添加[WebMethod]属性,若需访问实例成员需调整逻辑,静态方法可直接调用:

TfrmMain = class(TWebForm)
  ...
public
  { Public declarations }
  [WebMethod]
  class procedure MyDelphiProcedure(MyParam: UInt64); static;
end;

二、在JavaScript中调用方法

1. 动态创建图片的点击事件绑定

给动态生成的图片添加onclick回调:

// 创建图片元素
var dynamicImg = document.createElement('img');
dynamicImg.src = 'your-image-path.png';
// 绑定点击事件
dynamicImg.onclick = function() {
  // IntraWeb环境调用
  IWCallBack.CallBack('CallMyDelphiProc', [1]);
  
  // Delphi ASP.NET环境调用
  // PageMethods.MyDelphiProcedure(1);
};
// 添加到页面
document.body.appendChild(dynamicImg);

2. 任意JS代码中直接调用

// IntraWeb环境
IWCallBack.CallBack('CallMyDelphiProc', [123]);

// Delphi ASP.NET环境
PageMethods.MyDelphiProcedure(456);

注意事项

  • 确保框架支持AJAX:IntraWeb默认支持;Delphi ASP.NET需在页面添加ScriptManager组件并启用页面方法。
  • 参数类型匹配:JS的Number对应Delphi的UInt64时,注意数值范围不要溢出。
  • 实例成员访问:IntraWeb的回调会关联当前表单实例,可直接访问成员;ASP.NET静态方法无法访问实例成员,需通过其他方式传递上下文。

内容的提问来源于stack exchange,提问作者Shaun Roselt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 21:23:36