如何制作没有透明文本的TCheckbox(即:它忽略了主题)?

时间:2009-10-01 16:41:06

标签: delphi themes

如何制作没有透明文字的TCheckbox(即:它忽略了主题)?我被要求做一些非常规的事情 - 在一个组合框的标题处放置一个复选框。

在XP中,它看起来不太好。

with xp themes
(来源:xrw.bc.ca

接下来,我想我会尝试在互联网上听到的SetWindowTheme(CheckBox1.Handle,'','')。然后你得到一个白色的背景,但它不会用控件的颜色绘制。

no theme
(来源:xrw.bc.ca

我们怎么做?

谢谢你! 熔点

4 个答案:

答案 0 :(得分:2)

一个简单的解决方案是将足够的空格字符放入TGroupBox.Caption属性中。更复杂的解决方案是从TGroupBox派生并在Paint方法中使用FillRect / DrawParentBackground来绘制线条。

答案 1 :(得分:0)

过去我刚刚在复选框后面添加了一个空白的TLabel。

虽然

让维护变得有点痛苦

答案 2 :(得分:0)

TCheckbox上的Color属性不是这样做的吗?

在上面的图片中,如果您将“颜色”设置为与控件的颜色相同,我认为您可以获得所需的颜色。这将隐藏作为控件一部分的文本下的行并使其融入。

由于您不会提前知道颜色(由于不知道正在使用什么主题),因此您需要在创建表单时在运行时动态执行此操作,例如:

Checkbox.Color := Control.Color;

答案 3 :(得分:0)

谢谢大家的回答。最后,我这样做了:

  1. 以编程方式将groupbox标题的开头用空格填充到正确的宽度。

  2. 将复选框(没有标题)移动到标题区域。

  3. 这不是一个完美的解决方案,但似乎没问题。

相关问题