私はDelphi7を使用しています。私は、コンボボックスを区切り項目(ポップアップメニューのように)にしたいと思います。1つまたは複数のセパレータ項目を含むComboBoxを作成しますか?
私はこれが美しくMozillaのSunbirdの(私が知っている、それはデルファイではありません...)、次のように実装見てきた:
セパレーター項目が中央に描かれたシンプルなグレーのライン ですアイテムあなたが と、セパレータの上にマウスを置くと
は、選択は、ユーザがseparatoをクリックすると が
表示されませんr、 これも選択されていません。 コンボボックスはクローズアップではありません。
No.1は、DrawItemを使用して実装できます。私はそれについて全く知らないので、No.2なしで生きることができました。
3番の場合、私はあなたの助けを求めています。私はコンボボックスにCBN_CLOSEUPメッセージをクローズした後すぐにそれを理解しました。
私は、ウィンドウprocをフックし、CBN_CLOSEUPが特定のコンボボックスに送られてそれに対抗すると考えました。しかし、これが最善の解決策であるかどうかは分かりません。
解決策が何であれ、私はWinXP/Vista/7テーマを正しくサポートする標準のComboBoxを用意したいと思います。
ありがとうございます!
編集:作業コンポーネントの場合、このスレッドを参照してください:あなたはあなたのコントロールがうまく利用無料SpTBXLibを見たい場合は
Can you help translating this very small C++ component to Delphi?
標準のコンボボックスを要求しましたが、区切り文字を含むコンボボックスも求めました。これらは相互に排他的な要求です。 Mozillaのコンボボックスは、OSが提供するコントロールではないため、これを行うことができます。 Mozillaはすべてのコントロールに対して独自のコードをすべて提供しているため、サポートされているすべてのプラットフォームで一貫して動作することができます。 –
Mozillaのウィジェットは、私にとって不安なものです。プラットフォーム間で一貫性のある正確な整合性を実現しますが、ユーザーは単一のプラットフォーム上で動作する傾向があります。あなたが本当に必要とする一貫性はネイティブプラットフォームであり、実行できません。クロスプラットフォームでネイティブなウィジェットを実現できるQt以外のものはありますか? –
Mozillaの改良されたcomboxboxは、Win環境にすばらしく適合し、コンボボックスのセパレータで素晴らしいアイデアを追加します。しかし、Windows用のiTunes/Safariは非常に悪く混乱していることに同意します。(目標はWin PCからMacに移行するのは明らかですが...) – Steve