[QMacros] 复杂宏参数的传递_html/css_WEB-ITnose
【注意】
如果 QMacros 调用 Complie 或 Replace 时,标志位指定了 MRF_ENABLE_ESCAPE,并同时指定了 MRF_IN_DBL_QUOTER 或MRF_IN_SINGLE_QUOTER 两者之一,则 JSON 中的字符串转义时,由于字符串中的\会被解析,所以造成直接被转义,所以一般建议参数中的字符串如果包含转义时,采用双反斜线,即 “a\r\nb” 应为 “a\\r\\nb”。
【示例】
下面是 QMacros 的 HTML 模板示例里的一段代码:
procedure TForm1.Button3Click(Sender: TObject);const STemplate: QStringW = '' + // '多参数及转义示例 ' + // '' + '';var AMacros: TQMacroManager; AHtmlFile: String;begin AMacros := TQMacroManager.Create; try AMacros.Push('Title', 'QMacros HTML 模板示例'); AMacros.Push('Info', DoPrintInfo); AHtmlFile := ExtractFilePath(Application.ExeName) + 'index.html'; SaveTextW(AHtmlFile, AMacros.Replace(STemplate, '', MRF_PARSE_PARAMS)); WebBrowser1.Navigate('file:///' + StringReplaceW(AHtmlFile, '\', '/', [rfReplaceAll])); finally FreeAndNil(AMacros); end;end;
其中的 Info 宏提供了两个参数:
- 一个 JSON 格式的对象作为第一个参数: {“name”:”QDAC”,”version”:1.28,”copyright”:”©QDAC team\t2016″}
- 一个浮点值作为第二个参数: 3.0
我们看下 DoPrintInfo 宏的实现:
procedure TForm1.DoPrintInfo(AMacro: TQMacroItem; const AQuoter: QCharW);beginAMacro.Value.Value:='QMacros '+AMacro.Params[1].AsString+'
';with AMacro.Params[0] do begin AMacro.Value.Value:=AMacro.Value.Value+'工程名称:'+ValueByName('name','')+'
'+ '版本号:'+ValueByName('version','')+'
'+ '版权:'+ValueByName('copyright',''); end;end;
AMacro 是要赋值的宏对象,我们赋值时,将结果指定到 AMacro.Value.Value 上就可以。AMacro.Params 是一个 TQJson 数组类型的对象,我们可以完全按照 QJson 的用法,使用宏传递过来的参数,在些就不再缀述了。
上面的示例的实际运行效果:
推荐阅读
-
[QMacros] 复杂宏参数的传递_html/css_WEB-ITnose
-
[QMacros] 复杂宏参数的传递_html/css_WEB-ITnose
-
form使用Get方式提交表单时是不是不能通过URL传递参数的?_html/css_WEB-ITnose
-
前端在html页面之间传递参数的方法_html/css_WEB-ITnose
-
前端在html页面之间传递参数的方法_html/css_WEB-ITnose
-
form使用Get方式提交表单时是不是不能通过URL传递参数的?_html/css_WEB-ITnose
-
servlet 拿不到jsp里传递的参数_html/css_WEB-ITnose