参考 自带例子C:\Program Files (x86)\FMSoft\Framework\uniGUI\Demos\Desktop\ClientEvents-HtmlToAjax  开始写

a01]将uniHTMLFrame1的ID传给uniGUI
a02]发送Javascript里的参数值
a03]Delphi接收参数


 

更深学习例子 :2.1]富文本编辑器插件summernote.js将HTML源代码返回给Delphi

                2色子动画,并把值传回给Delphi

                 3]uniForm标题栏添加按钮

                38]为uniDBGrid设置文字操作栏

                4]wangEditor富文本编辑器,解决Backspace不向前删除问题


    a01]将uniHTMLFrame1的ID传给uniGUI

function beforeInit(sender, config)
{
    config.id = '_HTMLFrame';
}     


    a02]发送Javascript里的参数值 

<script>
var aaa;   
  
  //这里可以引用 第三方 JS 代码,只要将 最终值传回给aaa即可
     aaa= 'a值';                                                                  //1 生成参数值
  //如果是单个值,aaa变量都可省略,[ "val="+$('.summernote').summernote('code') ]
  
    function callServer() {                                                      //2发送参数
            ajaxRequest(Ext.getCmp("_HTMLFrame"), 'callserver', ["val="+aaa]);
    }
</script>     

<input type="button" value="点我,将Js值返回给Delphi" onclick="callServer()">  //通过函数名 来 连接 JS 和 Delphi
这里最重要,打通了JavaScript与Delphi之间的壁垒。

如果不是在UniHTMLFrame1里,上面甚至能写成一行 

'<button onclick="ajaxRequest('+UniDBGrid1.JSName+','+QuotedStr('audit')+',[''id='+Sender.DataSet.FieldByName('id').AsString+''']);">'+'&nbsp&nbsp审核&nbsp&nbsp</button>'
'<button  onclick="ajaxRequest('
         +UniDBGrid1.JSName+','        // 谁发起的 ,就在谁的Delphi里OnAjaxEvent事件里接收
         + QuotedStr('audit')                   //通过函数名 连接JS和Delphi
         +',[''id='+Sender.DataSet.FieldByName('id').AsString+''']);">'   //要传送的参数名和值,可以多个,以逗号分开

+'&nbsp&nbsp审核&nbsp&nbsp</button> '

   a03]Delphi接收参数 

 

procedure TMainForm.HTMLFrameAjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings);
begin
  UniMemo1.Lines.Clear;
  if EventName = 'callserver' then     begin //通过函数名 来 连接 JS 和 Delphi
 // UniMemo1.Lines.Add(Params.Text); //所有参数 
    UniMemo1.Lines.Add(Params['val'].Value); //获得 指定参数的 值      //3接收 参数
   end;
 end

 UniHTMLFrame1里的值传回给Delphi最简单例子源代码下载

链接:https://pan.baidu.com/s/1S1-MPHT3xwltjE4L7WXOGA
提取码:0lub