15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Как установить ширину Combo Box

Иногда из-за небольшого размера формы, ширина выпадающего списка оказывается настолько мала, что некотрый текст в нём вылезает за рамки списка и становится не видимым. Следующая функция получает текущий размер выпадающей части и изменяет её размер до необходимой ширины. Добавьте следующий код в модуль BAS и вызовите его из любой части процедуры Form_Load:

Private Declare Function SendMessage Lib _
	"USER32" Alias "SendMessageA" _
	(ByVal hwnd As Long, ByVal Msg As Long, _
	ByVal wParam As Long, ByVal lParam As _
	Long) As Long
Private Const CB_GETDROPPEDWIDTH = &H15F
Private Const CB_SETDROPPEDWIDTH = &H160
Private Const CB_ERR = -1

Public Function GetDropdownWidth(cboHwnd As Long) As Long
	Dim lRetVal As Long
	'*** To get the combo box drop-down width. 
	'*** You may use this function if you want 
	'*** to change the width in proportion 
	'*** i.e. double, half, 3/4 of existing width.
	lRetVal = SendMessage(cboHwnd, CB_GETDROPPEDWIDTH, 0, 0)
	If lRetVal <> CB_ERR Then
		GetDropdownWidth = lRetVal
		'Width in pixels
	Else
		GetDropdownWidth = 0
	End If
End Function

Public Function SetDropdownWidth(cboHwnd As _
	Long, NewWidthPixel As Long) As Boolean
	Dim lRetVal As Long
	' *** To set combo box drop-down width ***
	lRetVal = SendMessage(cboHwnd, _
		CB_SETDROPPEDWIDTH, NewWidthPixel, 0)
	If lRetVal <> CB_ERR Then
		SetDropdownWidth = True
	Else
		SetDropdownWidth = False
	End If
End Function