带有主题支持的透明复选框?
Posted
技术标签:
【中文标题】带有主题支持的透明复选框?【英文标题】:Transparent checkbox with theme-support? 【发布时间】:2010-04-26 17:24:02 【问题描述】:我正在寻找一个简单、透明的复选框组件,它可以正确支持 XP/Vista/7 主题。
它也应该适用于 Delphi 7。
我在 Torry's 上发现了一个无法正常工作的组件,而且我知道 Raize 组件有一个透明的复选框 - 但我显然不会为了获得这个单一组件而为整个包装支付 300 美元。
我还找到了许多其他解决方案,但没有一个支持主题化。
主要问题是 TCustomCheckBox 是一个 TWinControl 后代,为了实现透明度,您需要从头开始制作一个新的 TGraphic 后代控件。
有什么想法吗?
【问题讨论】:
【参考方案1】:LMD-Tools SE 是免费的,在 Delphi 7 上运行良好,并且有一个具有透明度属性的复选框组件。我最近使用了 TLMDCheckbox,它的透明度属性在 Delphi 7 中启用。
http://www.lmdinnovative.com/download/index.php#LMD
下载文件:setupse10d7.zip。抱歉,我还没有足够的果汁,所以无法发布整个路径(网址)。
这应该可以解决您的问题:)。
肖恩。
【讨论】:
谢谢,这是迄今为止最好的解决方案。但我运气不好。它在 TImages 和 TShapes 上运行良好,但我使用第三方控件(它产生好看的渐变,称为 TManyShape)作为复选框的背景。 LMDCheckbox 不支持这个组件,一定是 TManyShape 自己绘制的方式 :-(【参考方案2】:Raize Components 对于这个组件来说是多余的,但功能更强大,并且支持整个加载更多组件的透明度。一旦你拥有它,你会非常欣赏其他物品。我会说这是您正在寻找的解决方案。
【讨论】:
如果 Raize 单独出售他们的组件,我愿意花 50 美元买这个。但由于我的程序已经完成,我只需要复选框,这不是一个可行的选择。 Raize Components 为标准组件增加了更多的设计时间体验。即使您不使用任何 Raize 组件,它也会为自己付出代价:-) 伙计们,你们是从 Raize 那里得到报酬的吗?我绝不会为我不会使用的东西支付数百美元。 (我的应用已经准备好了,我只需要修复这个该死的复选框) @Steve 是的,我明白这一点,但你也会得到很多有用的函数和类。当然,它对于一个组件来说太贵了,但可以将其视为一种投资。 8-) 我知道 Ray 在正确支持透明度方面经历了多少痛苦,而且重复的成本比组件要高。【参考方案3】:如果您可以接受替代控件,则在 JVCL 库中有 JvXPCheckCtrls.pas 及其 TJvXPCheckbox 组件。 http://jvcl.delphi-jedi.org 我认为(如果我没记错的话)使用主题时它是透明的。
这是一个相当大的软件包,它会随着 Jvcl 的安装添加到 vcl 中。而且它不会花费你一分钱。
但请记住,TJvXPCheckbox 组件是其 XP 控件包的一部分,您不能简单地将组件作为独立组件取出。您将需要安装 Jedi 并获取核心代码和必要的主题处理以使用它。 - 其 Mozilla 公共许可证 (“MPL”) 版本 1.1。
【讨论】:
我曾经尝试过这个组件,但没有成功。如果我没记错的话,它支持皮肤(它有办公室风格的外观等),但不支持操作系统级别的主题。【参考方案4】:我将 AlphaControls 用于我的一些程序 - 它们的所有组件都是可换肤的,并且具有相当强大的图形处理选项。许多组件还具有比相应的 Delphi 标准组件更多的功能——我仅将其中一些用于这些功能。 www.alphaskins.com 上有一个免费的 Lite 版本 - 它可能正是您所追求的。请注意,它不支持 Vista/7 主题。我们使用 Delphi 2010,并且 vista/7 主题意识内置在标准 VCL 中,尽管这可能不是您希望的解决方案。
【讨论】:
【参考方案5】:不确定这是否有帮助,但我在使用 TMSSmooth 控件时遇到了我认为相同的问题:表单上复选框位置的标签看起来很糟糕,因为它不透明。
他们的演示/示例程序有漂亮的复选框,所以我看了一下他们的示例代码。
原来他们将复选框组件的宽度减小到了 13,以便只显示框本身而没有显示标题。然后他们为标题添加了一个 TLabel。
对我来说似乎是一个聪明的解决方法。
希望这会有所帮助。
【讨论】:
是的,但是 TLabels 不能有焦点。当您选择一个复选框时,它将有一个围绕文本部分的焦点矩形。我认为这是一个很好的 UI 功能,如果不这样做,可能会给一些用户带来问题和困惑。以上是关于带有主题支持的透明复选框?的主要内容,如果未能解决你的问题,请参考以下文章