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