Windows XE2、TVirtualStringTree
、およびTComboBox
をインプレース エディタとして使用しています。
をフォームに直接配置するTComboBox
と、実行時にリストをドロップダウンでき、マウス ホイールでリスト内の項目を (必要に応じて) 上下にスクロールできます。ただし、TComboBox
が実行時TVirtualStringTree
にインプレース エディターとして作成されると、新しく作成されたコンボ ボックスにフォーカスがあっても、マウス ホイールのWM_MOUSEWHEEL
メッセージはコンボ ボックスではなくツリー コントロールに送信されます。
コンボ ボックスのドロップダウン リストの項目がスクロールしないため、これは明らかです。代わりに、コンボ ボックスの背後にあるツリー コントロールがスクロールします。コンボ ボックスの固定部分はツリーと共に移動しますが、ドロップダウン リストはコンボ ボックスの固定部分から切断され、移動しません (図のように)。
どちらの場合も、TComboBox.Style
は に設定されていcsDropDownList
ます。コンボ ボックスがツリーのインプレース エディターとして作成される場合、次のように行われます。
FCBox := TComboBox.Create(TreeControl);
FCBox.Visible := False;
FCBox.Parent := TreeControl;
// ... add items to combo box ...
FCBox.Visible := True;
FCBox.SetFocus;
FCBox.DroppedDown := True;
マウスがどこにホバリングしているかは問題ではありません。コンボ ボックスのドロップダウン リスト内の項目のすぐ上に配置することもできますが、スクロールするのはバックグラウンドのツリー コントロールのままです。コンボ ボックス内の項目をスクロールする唯一の方法は、スクロール バーを使用することです。
フォーカスされたコントロールの親が、コントロール自体 (この場合はTComboBox
) ではなく、マウス ホイール メッセージを受信する原因は何ですか?