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

如何使用DWScript修改按钮的Caption属性?

DWScript与Delphi GUI按钮交互示例

下面是实现DWScript修改Delphi按钮Caption的完整流程:

1. Delphi宿主程序端配置

首先在Delphi工程中引用DWScript核心单元(tdwsUnit、tdwsExprs等),编写代码将TButton类和目标按钮暴露给脚本:

procedure TForm1.Button1Click(Sender: TObject);
var
  DWScript: TdwsScript;
  GlobalButtonVar: TdwsVar;
begin
  DWScript := TdwsScript.Create(nil);
  try
    // 注册TButton类及Caption可读写属性
    with DWScript.AddClass(TButton, 'TButton') do
    begin
      AddProperty('Caption', 'String',
        // 读属性回调
        function(Instance: TObject): Variant
        begin
          Result := TButton(Instance).Caption;
        end,
        // 写属性回调
        procedure(Instance: TObject; const Value: Variant)
        begin
          TButton(Instance).Caption := Value;
        end
      );
    end;

    // 将窗体上的Button1控件绑定为脚本全局变量"Button"
    GlobalButtonVar := DWScript.Globals.AddVar('Button', 'TButton');
    GlobalButtonVar.Value := Button1;

    // 加载并执行脚本
    DWScript.Script.Text := 'Button.Caption := ''Clicked'';';
    DWScript.Execute;
  finally
    DWScript.Free;
  end;
end;

2. DWScript脚本代码

脚本端只需执行简单的属性赋值语句:

Button.Caption := 'Clicked';

关键注意事项

  • 必须为Caption属性同时实现读、写回调,否则脚本会因权限问题无法修改属性
  • 全局变量的类型必须和注册的类名完全匹配(这里是TButton)
  • 如果需要批量暴露VCL控件,也可以用DWScript的RTTI自动绑定功能,通过AddRTTIUnit注册Vcl.StdCtrls单元,无需手动注册类和属性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:45:04