我希望只读复选框变灰,但在 Windows(XP 及更高版本)下显示它们的选中/未选中状态,但我遇到了一些问题。
注意 - 关于“只读”:似乎 Delphi 的 TCheckBox 甚至没有只读选项,这是通过将其放在 TPanel 上并禁用它来“伪造”的......但是问题仍然有效,如何实现一个灰色的只读复选框,或者一个显示其状态的非活动复选框。
禁用的复选框呈灰色显示,但它们不会显示选中或未选中状态。只读复选框可以,但是当 Windows 为它们设置主题时,它们看起来就像普通的可编辑复选框。只读框的值不能更改,但看起来可以。
在关闭主题的 XP 中(即在经典模式下),它可以正常工作。
由于大型应用程序的笨拙/不专业或开发时间/现金比率而无法接受的解决方案包括: - 手动将文本变灰并显示复选框状态的图像。- 禁用复选框上的主题,因为没有它们的外观很难看。- 使用自定义复选框
问题的屏幕截图 - 这些是三个选中的复选框,一个禁用,一个只读和一个正常:
尽管只读和可编辑复选框看起来不同,但这只是因为第一张图像中的可编辑框具有焦点。如果它是具有焦点的那个只读的,那么它看起来是一样的,如第二张图片所示。