Delphi中的富GUI应用程序

4
我希望使用Delphi创建一个具有丰富UI元素且没有VCL的应用程序(除TForm之外)。每个组件(按钮,列表等)都需要支持完整的像素级透明度,并且可以轻松创建而无需任何代码。它应该支持用户自定义皮肤,并能够产生类似Adobe Air应用程序的效果。
我已经尝试了GR32(Graphics32),但每个TImage32实例占用太多内存。
你知道是否有适用于Delphi 2009的框架或组件,可以让我创建一组用于制作丰富UI应用程序的组件吗?
谢谢!
编辑: 我的应用程序目前处于Alpha版本,看起来如下所示:
我想要类似的结果,但不使用每个组件(按钮、标签、面板等)的TImage32。

5
为什么不能使用VCL,这么严格? - smok1
为了制作更少“MS Windows”风格的软件。我正在制作一个即时通讯客户端,希望它具有自定义外观(如Trilian Astra)。 - Ariel R
9
您可能需要重新考虑那个设计决策。不一致的用户界面会使您的产品更难使用。请参见http://www.joelonsoftware.com/uibook/chapters/fog0000000061.html了解原理。 - Mason Wheeler
1
@Mason Wheeler:这个想法是为了使IM客户端的外观可定制,以改善用户体验。因此,我希望使用与Windows相同的工作机制,但具有完全不同的外观。@smok1:如果在完全不同的GUI样式中使用VCL组件,它们将看起来很奇怪。此外,VCL组件的外观在Windows版本(主要是Win2K、WinXP和Vista/Windows 7)上并不是非常可预测的。 - Ariel R
@Ariel R - 请看下面我的回答。 - smok1
显示剩余2条评论
10个回答

6

嗨!我已经检查了VGScene - 它似乎是制作我想要的东西最接近的框架。但不幸的是,VGScene似乎相当新,并且文档不是很完善,而且它的工作方式与VCL非常不同。我会检查最新版本,谢谢! - Ariel R
1
VGScene现已停止更新。 - Shannon Matthews
1
据我所知,VGScene在XE2中演变为FireMonkey。 - mjn
1
VGScene已经转变为FireMonkey,现在我需要再次回到VCL。如果可以将其与一些本地的VCL组件(如Quantum Grid)合并,我会考虑使用FireMonkey。但这是不可能的,所以现在我的漂亮丰富的GUI将需要回到普通的VCL了 :) - Plastkort

4
很奇怪,您想使用Delphi,但不想使用VCL?您可以使用Skinned控件吗?有一些好的皮肤包。您可以在这里查看皮肤包并下载一些演示:点击此处。您还可以尝试来自TMS的“平滑控件”。祝好。

我已经尝试了Torrys上展示的大多数皮肤包,但它们都不支持在窗体上进行高级绘图。例如,无法创建类似于MacOS X的用户界面(具有平滑的边框、窗体周围的阴影等)。 - Ariel R

3
我建议在表单上使用一个TWebBrowser组件(Align=alClient),并使用HTML/CSS进行大部分UI操作。有一些技巧可以将内容加载到TWebBrowser中,例如使用“res://” URL来加载已包含在可执行文件中的资源。
通过在uses子句中添加MSHTML单元,您可以在WebBrowser1.Document属性上使用IHTMLDocument2和相关接口来操作DOM,就像现今的Web2.0网站一样。

1
如果您喜欢这种方法,并且不介意从Internet Explorer实例中运行应用程序,请查看我开始的这个项目,它实现了IInternetProtocol:http://xxm.sourceforge.net/ - Stijn Sanders
正确,但这与直接在应用程序中操作每个组件不同(例如组件上的事件)。此外,它变得依赖于IE,并且不允许任何视觉效果。 - Ariel R
1
使用WebBrowser组件对你想要完成的任务来说是完全可以的。最终,你将拥有两个有效的应用程序:一个HTML+Javascript+CSS的用户界面,以及一个后端Delphi应用程序。强烈推荐采用MVC风格的设计! - Christer Fahlgren
好的,也许现在我可以理解MVC热潮是关于什么的了。你能告诉我在这种情况下进行“MVC风格设计”需要做些什么吗?请不要在这里回答,我已经发布了一个新问题:https://dev59.com/XEjSa4cB1Zd3GeqPJeUx - Stijn Sanders

2

2
好的,据我所见,你唯一的选择是使用VCL,但不是Delphi自带的普通VCL,而是使用一些组件库。你需要的库必须高度可定制并支持皮肤。我认为适合你的解决方案是Developer Express。这些组件符合你的需求:
  1. 完全可定制,有很多皮肤支持,并且它们的外观与经典的Windows GUI非常不同。
  2. DevExpress通常关心用户环境之间的一致性 - 例如,他们的Web控件在IE、Firefox和Opera中看起来相同。相同的规则也适用于Windows控件 - 它们将在各个版本的Windows中看起来相同。至少 - 你将能够控制不同版本中表单的外观(在普通的VCL中,你没有控制权)。
  3. 优秀的支持和频繁的更新使你感到舒适 - 他们相当快地修复错误,并考虑功能请求。

谢谢你的回答!我已经检查了DevExpress组件,但不幸的是像大多数皮肤组件一样,它依赖于Windows XP主题。它相当古老,不支持很多功能(没有每像素alpha、没有效果、没有转换等等)。使用DevExpress就像使用增强组件并使用类似Windows Blind的实用程序更改Windows主题。无法创建类似于MacOS X或KDE的GUI界面。 - Ariel R
@Ariel R:好的,继续努力,希望你能找到对你有用的东西 :) - smok1

0
也许你应该自己从OnPaint中绘制表单?(并处理所有鼠标、键盘和焦点问题)
自己创建一个迷你框架吧。Delphi是面向对象的,所以它是这项工作的好工具。 我相信你可以借助GR32的帮助使其运行得更快。

是的,我已经开始使用GR32来做这件事了 - 但是设计一个表单需要更多的工作和更难的设计。 - Ariel R

0

使用Delphi的.NET接口如何?.NET GUI被认为不太像窗口,可能会很容易地给你想要的东西。

这里是.NET GUI应用程序的示例

Delphi确实有自己的VCL for .NET,它可以使用.NET控件而不是Windows控件。

或者,您可以尝试Sourceforge上的Delphi JEDI VCL。它是免费的,拥有超过600个组件,许多组件可以提供一些不同的非Windows外观。


据我所知,.NET基于GDI/GDI+本地小部件,不是自绘的。 - Marco van de Voort
1
实际上,lkessler的示例指向了一个WPF示例,而那不是本地控件。如果您跳过“Delphi 2009”部分,WPF非常适合此问题的要求。 - Martin Liesén

0
如果您有时间,请等待Delphi 2010,它将支持Touch和Direct2D,您可以创建具有高端质量的复杂GUI界面。
此外,您可以尝试联系CrossGL的人们http://www.crossgl.com/cgl_about.htm
他们拥有一个强大的基于Delphi的矢量框架,曾经以高价销售一段时间。但我认为他们现在更多地通过基于其框架的应用程序赚钱。

似乎没有可用的框架。我会尝试看一下!谢谢! - Ariel R

0

-1

我希望你不要指望人们会使用这样的应用程序,因为他们不会。没有终端用户想要看到自定义外观。换肤只是一种业余爱好,适用于那些手头有太多时间但缺乏用户界面设计经验的程序员。


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