Как добавить горизонтальную полосу прокрутки (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
|