Как удалить полосу прокрутки в классе, производном от wxHtmlListBox?
В виджетах у меня есть класс с именем CListCtr, который является производным от wxHtmlListBox. Список содержит 100 элементов, но я просто хочу показать 10 элементов на одной странице, и когда я нажму кнопку pagedown, я получу еще одну страницу для отображения еще 10 элементов. Мне не нужна полоса прокрутки. Но он всегда добавляется при создании класса. Как я могу удалить полосу прокрутки или не создавать ее?
1 ответ
wxHtmlListBox является специализированным wxVScrolledWindow, который обрабатывает саму полосу прокрутки. Естественно, когда в списке больше элементов списка, чем может быть показано одновременно в клиентской области, появляется полоса прокрутки.
Однако обратите внимание, что нечего сказать, что ваш wxHtmlListBox должен содержать все доступные элементы. Если вам достаточно места для 10 элементов, просто вызовите SetItemCount(10) вместо SetItemCount(100), и вы не получите полосу прокрутки. Вы можете самостоятельно обрабатывать страницу вверх / вниз или любые другие навигационные клавиши и делать недействительным содержимое вашего wxHtmlListBox. Поскольку это виртуальный элемент управления, вам не нужно изменять какие-либо данные, вы просто возвращаете следующие или предыдущие 10 элементов в вашем списке в методах OnGetItem() и OnGetItemMarkup() вашего производного класса.
Обратите внимание, что это просто идея, как это реализовать, я думаю, что это не очень хорошая вещь. Полоса прокрутки является индикатором того, что имеется больше данных и где пользователь находится относительно начала и конца данных. Не нарушайте предположения пользователя. Откуда ему знать, что страница вверх / вниз будет прокручивать видимые данные?