【问题标题】:Delphi with HTML/CSS interface带有 HTML/CSS 界面的 Delphi
【发布时间】:2011-03-11 16:41:27
【问题描述】:

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

【问题讨论】:

  • 我不希望 CSS + HTML 带来比原生 Windows 应用程序更丰富的用户界面,您可以在其中利用 GPU,...您看过 .NET 和 WPF (@987654321 @)?有一些免费的开发者工具可以帮助您入门。
  • 你知道 Intraweb 吗?如果我没记错的话,它来自delphi7。最好的问候,拉杜
  • 随着 RAD Studio XE2 的发布,您现在可以将 Firemonkey 用于丰富的高清应用程序。然而 Firemonkey 仍然非常原始和不成熟,所以我不一定会推荐它,但它对于 Windows 8 的 XE3 具有很大的潜力......
  • 而且即使你不去Firemonkey,XE2的Delphi现在可以编译64个应用程序,你也可以像我在一些项目中那样实现VCL样式。

标签: html delphi interface


【解决方案1】:

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

Delphi(或与此相关的任何 Windows 应用程序开发语言)让您在实现比 HTML 或 CSS 更简单、有效和快速的富用户界面的道路上走得更远,很多。 p>

如果您不喜欢标准 Delphi 控件的外观和感觉(本质上就是您所说的),可以使用许多替代库。

但请记住,当有人使用 Windows 应用程序时,他们希望它在很大程度上具有某种特定的外观和行为方式。仅仅为了它而在桌面应用程序中使用花哨的、基于 Web 的范例,如果太过分,可能会使用户感到困惑和沮丧。

我完全赞成打破常规的用户界面,因为它可以带来更直观的用户界面,但仅仅“更漂亮”并不一定会朝着这个方向发展,而且就像教条地遵守惯例一样被误导。

【讨论】:

  • 虽然我不会争论这个答案在 2010 年的意义,但现在,在 2015 年,这个答案不再相关。 HTML5、CSS3 和 AngularJS 等框架(以及 BootstrapUI 等组件)的进步及其性能使它们非常适合集成到 Delphi 应用程序中。
  • @Peter - 我想这就是为什么答案(和问题)的日期/时间清晰可见。 ;) 重新编辑 SO 上的所有内容以保持相关性是不切实际的。内容的消费者只需要应用一些我担心的常识。当然,在这种特殊情况下,Delphi 本身已经取得了重大进展。使用 FMX(喜欢或讨厌它)OP 要求的东西(动画、非 VCL 外观等)都更容易掌握,而无需使用 HTML。 :)
  • 我完全同意你的看法。是的,Delphi 在 UI 和易用性方面已经取得了长足的进步,但我相信有些人仍然会寻求集成 Web 组件(如 AngularJS 或 EmberJS)。我只是觉得有必要指出,任何寻找 OP 问题最新答案的人都可能需要超越。
【解决方案2】:

在我的一个应用程序中,我有一个嵌入式浏览器,并且我已经实现了 IDocHostUIHandler 接口。这允许我通过“GetExternal”方法公开一个 COM 对象。我只是有一个 COM 对象,它公开了我的应用程序的方法和属性,这使得它们可用于托管在嵌入式浏览器中的网页。

所以我网页中的脚本有“external.DoSomething()”和“i=external.GetThisValue()”之类的行。因此,例如,在按钮 onclick 事件之后,您可以运行应用程序的方法(在主窗体、COM 对象本身或任何您喜欢的方式中实现)。

这个网站有很多关于在你的 Delphi 应用程序中嵌入浏览器的信息: http://www.delphidabbler.com/articles?article=22

实现很多这样的东西肯定很麻烦,而且在许多情况下可能有更好的选择。但对于我的特定目的,我能够提供一个“主页”,可以轻松修改它以更改其布局、外观,甚至根据我自己或我的用户的需要公开更多(或更少)功能。

【讨论】:

  • 感谢大家的所有好评!!你给了我很多探索的选择。我认为我正在努力完成 Jenakai 的回答是我最好的选择。再次感谢大家。这个网站太棒了!
【解决方案3】:

如果您想要一个界面更好看的 Delphi 程序,HTML 真的不是您想要的。您真正需要的是更好看的 VCL 控件。

以 TMS Smooth Controls 为例。如果您使用的是 Delphi 2009 或 2010,您可以免费下载 here。这是可以为您的程序带来更流畅的用户界面的众多组件库之一。

【讨论】:

    【解决方案4】:

    HTML / CSS 提供了一些很好的特性,这些特性(还没有?)在 Delphi 和 VCL 中可用。它们也是客户端/服务器编程的良好起点,分离用户界面和业务逻辑是这里的关键因素。

    一个流行的 Delphi 库是 extpascal project

    ExtPascal 是一个 Object Pascal (Delphi, FreePascal/Lazarus) 包装/绑定 对于 Ext JS,一个完整的 GUI Ajax 框架,用 JavaScript 制作,用于 富互联网应用程序 (RIA) 发展。 ExtPascal 让您使用 来自 Object Pascal 命令的 Ext JS 由服务器发出。它带来了 结构和严格的语法 用于 Web 编程的 Object Pascal 浏览器。 ExtPascal 将包装 Draw2d 到未来的版本中。

    一些演示在线herehere

    附言我真的很喜欢 HTML / CSS 对元素和相对单位字体大小的支持(例如百分比)。结合浏览器放大/缩小和WCAG,用户界面的人机工程学再好不过了。

    【讨论】:

      【解决方案5】:

      HTML 选项 1

      如果你真的想使用 HTML+CSS(+JavaScript) 来构建 GUI,你可以看看HTML Applications,这是一个来自 Microsoft 的非常有趣的概念。如果我没记错的话,Windows ME 已经支持 HTML 应用程序、.hta 文件,并且它们在 Windows 7 上仍然受支持。

      您可以创建一个 HTML 应用程序(即一个 HTA 文件),并通过这样做,创建一个仅使用 HTML、CSS 和 JavaScript 的 GUI。当用户双击 HTA 文件时,它会像程序一样打开,但 GUI 完全基于 HTML;其实整个Window就是一个变相的Internet Explorer窗口。

      现在重要的部分来了:您可以创建非 GUI 的 Delphi 应用程序(即,不是控制台应用程序,但也没有表单的 Delphi 应用程序),并从您的 HTA 中通过超链接(或 JavaScript)启动它们图形用户界面。 (嗯,最好创建一个这样的 Delphi 应用程序,并使用命令行参数 (ParamStrs) 来传达所需的操作。)

      只是一个想法......

      HTML 选项 2

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

      OpenGL 怎么样?

      如果您想“脱离”正常的 Windows 外观和感觉,那么我建议您使用 OpenGL 创建您的 GUI。使用 OpenGL 制作 Delphi 应用程序非常容易(只要您熟悉 OpenGL) - 只需将“OpenGL”添加到您的 uses 列表中即可。

      【讨论】:

        【解决方案6】:

        首先:我完全同意 Deltics 的回答。

        话虽如此,如果您精通 HTML 和 CSS(以及 JavaScript 和 AJAX 等),并且您正在寻找一种方法来利用 Delphi 编译器的强大功能和速度来运行网站的动态,那么这可能是兴趣。

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

        http://xxm.sourceforge.net/

        【讨论】:

          【解决方案7】:

          Qt 的新版本包含使用 html/js 作为接口的能力。我不知道 Delphi 是否有 Qt 库绑定,但 Qt 正是你想要的。

          【讨论】:

            【解决方案8】:

            对于丰富的 GUI 和动画,你看过 KSDev DXScenVGScene 吗?

            【讨论】:

            • 现在它被称为 FireMonkey,是 Delphi 的一部分。
            【解决方案9】:

            如果您想保留 delphi/Pascal 对象的“背景”并拥有类似 RIA 的 Web,您还可以查看 Morfik:link text

            【讨论】:

            • Morfik 需要服务器,你知道的。
            • @JonLennartAasenden 奇怪的评论!这个问题没有说“没有服务器”,我的回答只是为了“开放”思想。所以,我不是 Morfik 专家,但它似乎是部署“无服务器”的解决方案:wiki.morfik.com/wiki3/Deployment_on_Windows#Stand-alone-xapp
            • @JonLennartAasenden 是的,看起来很有希望!
            猜你喜欢
            • 2010-11-10
            • 1970-01-01
            • 2011-06-23
            • 2014-04-08
            • 2010-09-07
            • 1970-01-01
            • 2020-01-14
            • 1970-01-01
            • 2013-12-22
            相关资源
            最近更新 更多