Andreas Rejbrandが数年前に回答したように、 Itemsとは異なる文字列値を表示する非常に簡単な方法は、 Styleプロパティを からcsDropDown
にcsOwnerDrawFixed
設定することです。
問題は、それを行うとすぐに、Windows テーマのサポートが失われることです。
同じ制限が使用に適用されますcsOwnerDrawVariable
これらの 2 つの値は、Windows COMBOBOX コントロールのスタイル(に加えて)またはStyle
を追加することに変換されます。CBS_OWNERDRAWFIXED
CBS_OWNERDRAWVARIABLE
CBS_DROPDOWNLIST
順番に、CBS_OWNERDRAWFIXED
またはWindows テーマのサポートを即座に失うCBS_OWNERDRAWVARIABLE
原因となります。
カラー ピッカーのようにフル カスタム ペイントを行う場合、それで問題ありません。ただし、描画されたテキストのみを置き換えたい場合は、そうではありません。
Windows COMBOBOX コントロールにはこれを回避する方法がないように思われるので、どうすれば Delphi から Windows テーマをシミュレートできるのでしょうか?
DrawThemedBackgroundと関係があると思いますが、Delphi コントロールの本格的な作業を行ってからしばらく経っているので、そこから始める方法についての指針も問題ありません (たとえそれらが私の仮定を無効にしたとしても)。