显示与Items不同的字符串值的一种非常简单的方法是在csDropDown to csOwnerDrawFixed中设置Style属性,因为Andreas Rejbrand具有answered a few years ago。
问题是:一旦你这么做了,你就失去了对Windows主题的支持。
同样的限制也适用于使用csOwnerDrawVariable
这两个Windows值被转换为添加Style COMBOBOX control的CBS_OWNERDRAWFIXED或CBS_OWNERDRAWVARIABLE (除CBS_DROPDOWNLIST之外) styles。
反过来,CBS_OWNERDRAWFIXED或CBS_OWNERDRAWVARIABLE会导致您使用instantly loose the Windows theming support。
当你做全自定义绘制like a colour picker时,这一切都很好。但当您只想替换绘制的文本时,就不是这样了。
The Windows COMBOBOX control does not seem to have a way around this,所以我想知道:你如何从Delphi中模拟窗口主题?
我认为这与DrawThemedBackground有关,但我已经有一段时间没有做过认真的Delphi控制工作了,所以任何关于如何开始使用Delphi的指导也是很好的(即使他们推翻了我的假设)。
发布于 2013-04-18 04:45:16
几年前,我在TurboPower Orpheus ComboBox中添加了主题支持。看看{$IFDEF VERSION2010}...{$ENDIF}部分中的代码。这应该会让你对所需要的东西有一个很好的了解。
https://stackoverflow.com/questions/12338486
复制相似问题