我们在实际开发中,由于各种各样的原因,可能会结合浏览器来实现一些 Delphi 本身不好实现的效果。而如果网页是靠拼字符串来完成,显然其效率不是太理想。而如果结合 QMacros ,你会发现一切都变的那么简单。QMacros 的示例中包含了一个新的 HTML 模板示例代码,我们来解读其中与 QMacros 相关的部分,来看看如何玩转 HTML 模板。
首先,我们在窗体上包含了一个数据集,数据集中有两个字段:Id 和 Name,由于在设计期添加了这两个字段,所以在定义中我们可以看到它们分别是 adsDataId 和 adsDataName。为了演示方便,我们在窗体的构造函数中生成了10条测试数据。
接下来,我们来看剩下的源码:
procedure TForm1.Button1Click(Sender: TObject);const STableTemplate: QStringW = '<html><head><title><%Title%></title></head>' + // '<body>这是一个表格<table border="1" cellspacing="0" cellpadding="0" bordercolor="#000000" style="BORDER-COLLAPSE: collapse">'+ // '<th><tr><td>编号</td><td>姓名</td></tr></th>' + // '<%Rows("<tr><td>%Id%</td><td>%Name%</td></tr>")%>' + // '</table></body>';var AMacros: TQMacroManager; AHtmlFile: String;begin AMacros := TQMacroManager.Create; try AMacros.Push('Title', 'QMacros HTML表格'); AMacros.Push('Rows', DoReplaceRows); AHtmlFile := ExtractFilePath(Application.ExeName) + 'index.html'; SaveTextW(AHtmlFile, AMacros.Replace(STableTemplate, '<%', '%>', MRF_PARSE_PARAMS)); WebBrowser1.Navigate('file:///' + StringReplaceW(AHtmlFile, '\', '/', [rfReplaceAll])); finally FreeAndNil(AMacros); end;end; procedure TForm1.DoReplaceRows(AMacro: TQMacroItem; const AQuoter: QCharW);var AMacros: TQMacroManager; AReplace: TQMacroComplied; AHelper: TQStringCatHelperW;begin AMacros := TQMacroManager.Create; AHelper := TQStringCatHelperW.Create; adsData.DisableControls; try AMacros.Push(adsData, ''); adsData.First; AReplace := AMacros.Complie(AMacro.Params[0].AsString, '%', '%'); while not adsData.Eof do begin AHelper.Cat(AReplace.Replace); adsData.Next; end; AMacro.Value.Value := AHelper.Value; finally FreeAndNil(AMacros); FreeAndNil(AHelper); FreeAndNil(AReplace); adsData.EnableControls; end;end;
好了,我们来说明一点,我们在示例中直接定义了一个常量字符串STableTemplate,实际上这个东西你完全可以定义到外部文件中,然后在运行时用 LoadTextW 加载。后面的步骤就和这个示例一样了。
我们来看 Button1Click 都做了啥:
- 创建 TQMacroManager 对象实例 AMacros;
- 入栈了两个宏:
- Title :用来做为表格标题
- Rows :一个带参数的宏,参数是要重复的HTML内容
- 执行 AMacros 的替换,并将替换结果保存到当前程序下,命名为 index.html。
- 用 Navigate 函数加载保存的网页,以显示生成的 HTML 内容。
在这里,宏 Title 是一个固定值,而 Rows 是一个函数式的宏,由 DoReplaceRows 来提供进一步处理:
- 创建必要的实例;
- 将 adsData 数据集的字段入栈;
- 预编译 Rows 宏的参数,以便后面重复替换;
- 循环 adsData 生成,替换的每一步结果追加到 AHelper 中;
- 设置宏当前的值为 AHelper.Value;
- 清理局部变量的值;
OK,这样子,就完成了上面的模板的替换工作。这里注意,我创建了一个局部的 TQMacroManager 对象的实例,当然你也可以用 Button1Click 里的 AMacros,那样,宏 Title 、Rows 的值也会被嵌入。
我们看一下实际的运行结果:

HTML是一种用于构建网页的语言,通过标签和属性定义网页结构和内容。1)HTML通过标签组织文档结构,如、。2)浏览器解析HTML构建DOM并渲染网页。3)HTML5的新特性如、、增强了多媒体功能。4)常见错误包括标签未闭合和属性值未加引号。5)优化建议包括使用语义化标签和减少文件大小。

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

HTML的作用是通过标签和属性定义网页的结构和内容。1.HTML通过到、等标签组织内容,使其易于阅读和理解。2.使用语义化标签如、等增强可访问性和SEO。3.优化HTML代码可以提高网页加载速度和用户体验。

htmlisaspecifictypefodyfocusedonstructuringwebcontent,而“代码” badlyLyCludEslanguagesLikeLikejavascriptandPytyPythonForFunctionality.1)htmldefineswebpagertuctureduseTags.2)“代码”代码“ code” code code code codeSpassSesseseseseseseseAwiderRangeLangeLangeforLageforLogageforLogicIctInterract

HTML、CSS和JavaScript是Web开发的三大支柱。1.HTML定义网页结构,使用标签如、等。2.CSS控制网页样式,使用选择器和属性如color、font-size等。3.JavaScript实现动态效果和交互,通过事件监听和DOM操作。

HTML定义网页结构,CSS负责样式和布局,JavaScript赋予动态交互。三者在网页开发中各司其职,共同构建丰富多彩的网站。

HTML适合初学者学习,因为它简单易学且能快速看到成果。1)HTML的学习曲线平缓,易于上手。2)只需掌握基本标签即可开始创建网页。3)灵活性高,可与CSS和JavaScript结合使用。4)丰富的学习资源和现代工具支持学习过程。

AnexampleOfAstartingTaginHtmlis,beginSaparagraph.startingTagSareEssentialInhtmlastheyInitiateEllements,defiteTheeTheErtypes,andarecrucialforsstructuringwebpages wepages webpages andConstructingthedom。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

WebStorm Mac版
好用的JavaScript开发工具

SublimeText3汉化版
中文版,非常好用

Dreamweaver Mac版
视觉化网页开发工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Atom编辑器mac版下载
最流行的的开源编辑器