如何使用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
相关产品推荐
相关产品推荐

