Delphi与HTML/CSS界面

14

我希望开发一个 Delphi 应用程序,拥有一个 HTML/CSS 的图形用户界面,但不一定需要在 Web 浏览器中运行。我想这样做是为了创建一个更丰富的图形用户界面,包含动画等,并摆脱普通的 VCL 组件/Windows 外观。有什么建议吗?


6
我不认为CSS+HTML可以带来比本地Windows应用程序更丰富的用户界面,因为你可以利用GPU等。你是否看过.NET和WPF(http://windowsclient.net/)?有免费的开发工具可以帮助你入门。 - Darin Dimitrov
1
你知道Intraweb吗?如果我没记错的话,它是Delphi7免费提供的。最好的问候, Radu - RBA
自从RAD Studio XE2发布以来,您现在可以使用Firemonkey创建丰富的高清应用程序。然而,Firemonkey仍然非常原始和不成熟,所以我不会立刻推荐它,但它在XE3中有很高的潜力,特别是针对Windows 8... - Jerry Dodge
即使您不使用Firemonkey,XE2的Delphi现在也可以编译64位应用程序,并且您还可以像我在一些项目中所做的那样实现VCL样式。 - Jerry Dodge
9个回答

9

HTML和CSS无法为您提供动画或丰富的用户界面,相反,您需要投资于工具包以提供这种功能,并几乎肯定涉及JavaScript。即使您不希望最终的应用程序托管在Web浏览器中,您的应用程序本身也必须托管Web浏览器来呈现您的HTML/CSS/JavaScript UI,然后您将需要更加困难地将GUI连接到应用程序逻辑(除非您确实采用Web应用程序架构)。

Delphi(或任何Windows应用程序开发语言)比HTML或CSS更能让您快速有效地实现丰富的用户界面。

如果您不喜欢标准Delphi控件的外观和感觉(本质上就是这个意思),则有很多可用的替代库。

但是请记住,当某人使用Windows应用程序时,他们在很大程度上都期望它的外观和行为方式。在桌面应用程序中仅仅因为它很花哨而使用基于Web的范例可能会导致混淆和挫败用户的期望。

我完全支持用户界面打破传统,如果它可以导致更直观的用户界面,但仅仅因为它更“漂亮”并不一定会朝着这个方向发展,这和教条主义地遵循传统一样是错误的。


1
虽然我不会质疑这个答案在2010年的意义,但是现在,在2015年,这个答案已经不再相关了。HTML5、CSS3以及像AngularJS(和BootstrapUI这样的组件)这样的框架的进步和性能使它们成为集成到Delphi应用程序中的非常可行的候选项。 - Peter Noble
@Peter - 我想这就是为什么答案(和问题)都有清晰可见的日期/时间的原因;对于持续相关性,对SO上的所有内容进行复古编辑是不切实际的。内容的消费者只需运用一些常识便能解决。当然,在这种特殊情况下,Delphi本身已经取得了重大进展。使用FMX(不管你喜欢还是讨厌),OP所要求的(动画、非VCL外观等)都更容易掌握,而不必去寻找HTML。 :) - Deltics
我完全同意你的观点。没错,Delphi在用户界面和易用性方面已经取得了长足的进步,但我相信一些人仍然希望集成Web组件(例如AngularJS或EmberJS)。我只是感到有必要指出,任何寻找最新答案的人可能需要超越这个范围。 - Peter Noble

8
在我的一个应用程序中,我有一个嵌入式浏览器,并实现了IDocHostUIHandler接口。这使我能够通过“GetExternal”方法公开一个COM对象。我只需要一个公开应用程序方法和属性的COM对象,这样就可以将它们提供给嵌入式浏览器内部托管的网页。
因此,我的网页脚本有像“external.DoSomething()”和“i=external.GetThisValue()”这样的行。例如,在按钮onclick事件后面,您可以运行应用程序的方法(在主窗体中实现,在COM对象本身中实现或任何您喜欢的方式)。
这个网站上有很多关于在Delphi应用程序中嵌入浏览器的信息:http://www.delphidabbler.com/articles?article=22 在许多情况下,实现大量的这些内容可能会很麻烦,并且可能有更好的选择。但是对于我的特定目的,我能够提供一个“主页”,可以轻松地修改其布局、外观甚至根据我自己或我的用户的要求公开更多(或更少)功能。

1
谢谢大家的热情回复!!你们给了我很多可以探索的选项。我认为对于我想要实现的目标,Jenakai的答案是最好的选择。再次感谢大家。这个网站绝对太棒了! - Hardy Le Roux

5

如果您想要一个外观更好的 Delphi 程序,HTML 绝对不是您要寻找的东西。您真正需要的是外观更漂亮的 VCL 控件。

例如,看一下 TMS Smooth Controls。如果您使用的是 Delphi 2009 或 2010,则可以在此处免费下载。这是许多组件库之一,它可以为您的程序带来更出色的用户界面。


4
HTML/CSS提供了一些很好的功能,在Delphi和VCL中还没有(或者还未)实现。它们也是客户端/服务器编程的一个很好的起点,将用户界面和业务逻辑分离是关键因素。
对于Delphi而言,一个受欢迎的库是extpascal项目

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,用户界面的人机工程学可以得到更好的改善。


2

HTML选项1

如果您确实想使用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)来传递所需的操作。)

这只是个想法...

HTML选项2

另外,您可以创建一个普通的Delphi GUI应用程序,但用TWebBrowser(IE控件)填充整个主窗体,使用Align := alClient。然后,您可以加载静态HTML页面(存储在Program Files文件夹或互联网上),或使用Delphi动态创建HTML页面展示。我认为它可能可以拦截控件中的链接,以便您可以使用Delphi代码响应链接。

OpenGL呢?

如果您想“摆脱”正常的Windows外观和感觉,那么我建议您使用OpenGL来创建GUI。只要您熟悉OpenGL,就很容易制作一个带有OpenGL的Delphi应用程序——只需将“OpenGL”添加到uses列表中即可。


1

首先,我完全同意Deltics的答案。

话虽如此,如果你掌握了HTML和CSS(以及JavaScript和AJAX等等),并且正在寻找一种使用Delphi编译器的强大和快速运行网站动态的方法,那么这可能会引起你的兴趣。

我创建了一个项目,使用Delphi编译器构建一个运行网站的库。源文件结合了HTML和Delphi,就像其他网络脚本工具一样,但在页面刷新时进行处理并自动编译。它使用一个“库处理程序”,将网站库插入到几乎任何你喜欢的东西中:IIS、Apache、独立的HTTP服务器(用于托管)或直接插入InternetExplorer或FireFox(非常适合开发)。

http://xxm.sourceforge.net/


1
新版本的Qt包含使用html/js界面的功能。我不知道是否有适用于Delphi的Qt库绑定,但Qt正是您想要的。

1

如果你想要丰富的GUI和动画效果,你可以看一下KSDev DXScenVGScene


1
现在它被称为FireMonkey,并且是Delphi的一部分。 - Torbins

0
如果您想保留您的Delphi/Pascal对象“背景”,并拥有类似Web RIA的功能,您也可以看看Morfik:链接文本

Morfik需要一个服务器,你知道的。 - Jon Lennart Aasenden
@JonLennartAasenden 奇怪的评论!问题并没有说“没有服务器”,我的回答只是为了“开放”思路。所以,我不是Morfik专家,但似乎有解决方案可以在没有服务器的情况下部署:http://wiki.morfik.com/wiki3/Deployment_on_Windows#Stand-alone-xapp - philnext
@JonLennartAasenden 是的,看起来很有前途! - philnext

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接