Visual Basic. Программирование на Visual Basic

..........................................................................................................................

[ Главная ] [ Статьи ] [ Для новичков ] [ Примеры ] [ Программы ] [ Microsoft Agent 2.0 ] [ Пособие ] [ Уроки ] [ Разное ]
..........................................................................................................................



Изменение высоты выпадающей части комбобокса.
Данный пример покажет, как можно изменить высоту выпадающей части элемента ComboBox в зависимости от высоты формы, на которой элемент расположен.


Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Private Sub Form_Load()
Dim i As Integer ' Заполняем комбобокс значениями
For i = 1 To 50
Combo1.AddItem Format$(i)
Next i
Combo1.ListIndex = 0 ' Меняем размер выпадающей части комбобокса
ReSizeCombo Me, Combo1
End Sub
Public Sub ReSizeCombo(frm As Form, cbo As ComboBox) ' Процедура меняет размер выпадающей части комбобокса
Dim cboLeft As Long
Dim cboTop As Long
Dim cboWidth As Long
Dim cboHeight As Long
Dim oldScaleMode As Long ' Меняем Scale Mode формы на пиксели.
oldScaleMode = frm.ScaleMode
frm.ScaleMode = vbPixels ' Сохраняем размеры комбобокса
cboLeft = cbo.Left
cboTop = cbo.Top
cboWidth = cbo.Width ' Задаем новую высоту комбобокса, в соотвествии с рабочей областью формы
cboHeight = frm.ScaleHeight - cbo.Top - 5
frm.ScaleMode = oldScaleMode 'и собственно ресайзаем
MoveWindow cbo.hwnd, cboLeft, cboTop, cboWidth, cboHeight, 1
End Sub
Private Sub Form_Resize()
ReSizeCombo Me, Combo1
End Sub

Следующий пример покажет, как можно задать количество открываемых строк элемента ComboBox

Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Const CB_GETITEMHEIGHT = &H154
Private Sub Form_Load()
Dim i As Integer
'Заполняем комбобокс значениями
For i = 1 To 50
Combo1.AddItem Format$(i)
Next i
Combo1.ListIndex = 0
'Меняем размер выпадающей части комбобокса
ReSizeCombo Me, Combo1, 9
End Sub


Public Sub ReSizeCombo(frm As Form, cbo As ComboBox, n As Integer)
'Процедура меняет размер выпадающей части комбобокса
Dim cboLeft As Long
Dim cboTop As Long
Dim cboWidth As Long
Dim cboHeight As Long
Dim oldScaleMode As Long
Dim h As Long
'Меняем Scale Mode формы на пиксели.
oldScaleMode = frm.ScaleMode
frm.ScaleMode = vbPixels
'Сохраняем размеры комбобокса
cboLeft = cbo.Left
cboTop = cbo.Top
cboWidth = cbo.Width
'Получаем высоту одной строчки в пикселях
h = SendMessage(cbo.hwnd, CB_GETITEMHEIGHT, 0, 0)
'Задаем новую высоту комбобокса
'К количеству строк надо прибавить 2 (не знаю почему)
cboHeight = h * (n + 2)
frm.ScaleMode = oldScaleMode
'и собственно ресайзаем
MoveWindow cbo.hwnd, cboLeft, cboTop, cboWidth, cboHeight, 1
End Sub



..........................................................................................................................

[ Главная ] [ Диски ] [ Книги ] [ Архив рассылки ] [ Архив новостей ] [ Готовые кусочки программ ] [ Карта сайта ]
..........................................................................................................................

По страницам сайта Visaul Progs
или Изучение Visual Basic
Рассылка 'По страницам сайта Visaul Progs' >>> Подпишись на рассылку - будешь получать новые статьи , примеры и много полезной информации из первых рук!!! >>>Если у вас есть статья которой нет на сайте
пришлите ее мне-------->
Послать статью
>>>Если вы хотите задать вопрос
пишите-------->
Мне нужна помощь


Рейтинг сайтов YandeG Rambler's Top100
Реклама:

...:::Design by Mystf0rse 2005-2010 year:::...