我希望开发一个 Delphi 应用程序,拥有一个 HTML/CSS 的图形用户界面,但不一定需要在 Web 浏览器中运行。我想这样做是为了创建一个更丰富的图形用户界面,包含动画等,并摆脱普通的 VCL 组件/Windows 外观。有什么建议吗?
我希望开发一个 Delphi 应用程序,拥有一个 HTML/CSS 的图形用户界面,但不一定需要在 Web 浏览器中运行。我想这样做是为了创建一个更丰富的图形用户界面,包含动画等,并摆脱普通的 VCL 组件/Windows 外观。有什么建议吗?
HTML和CSS无法为您提供动画或丰富的用户界面,相反,您需要投资于工具包以提供这种功能,并几乎肯定涉及JavaScript。即使您不希望最终的应用程序托管在Web浏览器中,您的应用程序本身也必须托管Web浏览器来呈现您的HTML/CSS/JavaScript UI,然后您将需要更加困难地将GUI连接到应用程序逻辑(除非您确实采用Web应用程序架构)。
Delphi(或任何Windows应用程序开发语言)比HTML或CSS更能让您快速有效地实现丰富的用户界面。
如果您不喜欢标准Delphi控件的外观和感觉(本质上就是这个意思),则有很多可用的替代库。
但是请记住,当某人使用Windows应用程序时,他们在很大程度上都期望它的外观和行为方式。在桌面应用程序中仅仅因为它很花哨而使用基于Web的范例可能会导致混淆和挫败用户的期望。
我完全支持用户界面打破传统,如果它可以导致更直观的用户界面,但仅仅因为它更“漂亮”并不一定会朝着这个方向发展,这和教条主义地遵循传统一样是错误的。
如果您想要一个外观更好的 Delphi 程序,HTML 绝对不是您要寻找的东西。您真正需要的是外观更漂亮的 VCL 控件。
例如,看一下 TMS Smooth Controls。如果您使用的是 Delphi 2009 或 2010,则可以在此处免费下载。这是许多组件库之一,它可以为您的程序带来更出色的用户界面。
一些演示可以在这里和这里在线查看。ExtPascal是Ext JS的Object Pascal(Delphi、FreePascal/Lazarus)封装/绑定,Ext JS是一个完整的GUI Ajax框架,由JavaScript制作,用于富互联网应用程序(RIA)开发。ExtPascal允许您使用由服务器发出的Object Pascal命令来使用Ext JS。它为使用Object Pascal编写Web浏览器程序提供了结构和严格的语法。ExtPascal将在未来版本中包装Draw2d。
顺便提一句,我非常喜欢HTML/CSS支持相对单位(例如百分比)的元素和字体大小。结合浏览器的缩放功能以及WCAG,用户界面的人机工程学可以得到更好的改善。
如果您确实想使用HTML+CSS(+JavaScript)来构建GUI,可以看看微软提出的非常吸引人的概念——HTML应用程序。HTML应用程序(.hta文件)从Windows ME开始得到支持,直到Windows 7依然被支持。
您可以创建一个HTML应用程序(即HTA文件),通过这样做,只使用HTML、CSS和JavaScript来创建GUI。当用户双击HTA文件时,它会像程序一样打开,但GUI完全基于HTML;事实上,整个窗口都是伪装成Internet Explorer窗口的。
现在来到重要的部分:您可以创建非GUI Delphi应用程序(即,不是控制台应用程序,但也没有表单),并通过超链接(或JavaScript)从您的HTA GUI中启动它们。(嗯,最好是创建一个这样的Delphi应用程序,并使用命令行参数(ParamStr
)来传递所需的操作。)
这只是个想法...
另外,您可以创建一个普通的Delphi GUI应用程序,但用TWebBrowser(IE控件)填充整个主窗体,使用Align := alClient
。然后,您可以加载静态HTML页面(存储在Program Files文件夹或互联网上),或使用Delphi动态创建HTML页面展示。我认为它可能可以拦截控件中的链接,以便您可以使用Delphi代码响应链接。
如果您想“摆脱”正常的Windows外观和感觉,那么我建议您使用OpenGL来创建GUI。只要您熟悉OpenGL,就很容易制作一个带有OpenGL的Delphi应用程序——只需将“OpenGL”添加到uses
列表中即可。
首先,我完全同意Deltics的答案。
话虽如此,如果你掌握了HTML和CSS(以及JavaScript和AJAX等等),并且正在寻找一种使用Delphi编译器的强大和快速运行网站动态的方法,那么这可能会引起你的兴趣。
我创建了一个项目,使用Delphi编译器构建一个运行网站的库。源文件结合了HTML和Delphi,就像其他网络脚本工具一样,但在页面刷新时进行处理并自动编译。它使用一个“库处理程序”,将网站库插入到几乎任何你喜欢的东西中:IIS、Apache、独立的HTTP服务器(用于托管)或直接插入InternetExplorer或FireFox(非常适合开发)。