Heim > Web-Frontend > HTML-Tutorial > [QMacros] 复杂宏参数的传递_html/css_WEB-ITnose

[QMacros] 复杂宏参数的传递_html/css_WEB-ITnose

WBOY
Freigeben: 2016-06-21 08:53:26
Original
1148 Leute haben es durchsucht

QMacros 的宏支持传递参数,其参数的格式参照 JSON 执行,所以 QMacros 的参数支持 JSON 所有的数据类型:null、true/false、数值、字符串、对象和数组,字符串中内容的转义也遵守 JSON 的规则。

【注意】

如果 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 = '<html><head><title><%Title%></title></head>' + //    '<body>多参数及转义示例<p>' + //    '<%Info({"name":"QDAC","version":1.28,"copyright":"&copy;QDAC team\t2016"},3.0)%>'    + '</body>';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;
Nach dem Login kopieren

其中的 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+'<BR/>';with AMacro.Params[0] do  begin  AMacro.Value.Value:=AMacro.Value.Value+'工程名称:'+ValueByName('name','')+'<BR/>'+    '版本号:'+ValueByName('version','')+'<BR/>'+    '版权:'+ValueByName('copyright','');  end;end;
Nach dem Login kopieren

AMacro 是要赋值的宏对象,我们赋值时,将结果指定到 AMacro.Value.Value 上就可以。AMacro.Params 是一个 TQJson 数组类型的对象,我们可以完全按照 QJson 的用法,使用宏传递过来的参数,在些就不再缀述了。

上面的示例的实际运行效果:

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage