ウィジェットには、wxHtmlListBox から派生した CListCtr という名前のクラスがあります。リストには100個のアイテムが含まれていますが、1ページに10個のアイテムを表示したいだけで、ページダウンボタンを押すと、別のページに別の10個のアイテムが表示されます。スクロールバーは必要ありません。ただし、クラスの作成時に常に追加されます。スクロールバーを削除する、または作成しないようにするにはどうすればよいですか?
1 に答える
wxHtmlListBox は、スクロールバー自体を処理する特別な wxVScrolledWindow です。当然ながら、クライアント領域で同時に表示できるよりも多くのリスト項目がリストにある場合、スクロールバーが表示されます。
ただし、wxHtmlListBox に使用可能なすべてのアイテムを含める必要があることは言うまでもありません。10 項目分のスペースを確保する場合は、SetItemCount(100) の代わりに SetItemCount(10) を呼び出すだけで、スクロールバーは表示されません。ページ アップ/ページ ダウンまたはその他のナビゲーション キーを自分で処理し、wxHtmlListBox の内容を無効にすることができます。これはデータを変更する必要のない仮想コントロールであるため、派生クラスの OnGetItem() および OnGetItemMarkup() メソッドで、リスト内の次または前の 10 項目を返すだけです。
これはこれを実装する方法のアイデアにすぎないことに注意してください。これは良いことではないと思います。スクロールバーは、さらにデータがあり、ユーザーがデータの開始と終了に対して相対的な位置にあることを示すインジケーターです。ユーザーの前提を壊さないでください。ページを上下にスクロールすると表示されるデータがスクロールされることをどうやって知るのでしょうか?