Поиск на сайте
Главная Журнал Форум Wiki DRKB Страны мира


Как добавить горизонтальную полосу прокрутки (ScrollBar) в ListBox

Стандартный листбоксы в VB не поддерживают горизонтальной полосы прокрутки, только вертикальную. Давайте посмотрим как можно решить эту проблему при помощи API.

' In General Declarations
Private Declare Function SendMessageByNum Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, ByVal _
wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Const LB_SETHORIZONTALEXTENT = &H194

Для отображения горизонтального скроллбара теперь достаточно вызвать

SendMessageByNum List1.hwnd, LB_SETHORIZONTALEXTENT, 250, 0

List1.hwnd замените именем Вашего листбокса, а 250 замените на ширину, которую будет иметь Ваш скроллбар. Если задать ширину 0, то скроллбар не будет показан. А вот следующия подпрограммка сама определяет необходимую ширину.

Sub lstAddHScroll(lst as ListBox)
    ' depends on the scalewidth
    ' if scalemode is Twips then Divide M by 15 to get Pixels

    For a=0 to lst.listcount-1
        if me.textwidth(lst.list(a))>m then m=me.textwidth(lst.list(a))
    Next

    SendMessageByNum lst.hwnd, LB_SETHORIZONTALEXTENT, m/15, 0
End Sub

 

 


Основные разделы сайта


 

Реклама АвтоСпецЦентр - митсубиси фусо ремонт.