Bien, en una de las paginas que me distes sale un código que modifica el Alto de un ComboBox, aca lo adapté a una función la cual se puede colocar en un módulo independiente y se puede llamar desde cualquier parte del proyecto.
Funcionamiento
El funcionamiento es simple, para llamar a esta función hay que utilizar la siguiente linea :
ModificarAlto(25,Combo1,Form1,true)
Descripción
ModificarAlto(Nº de Registros Deseados, ComboBox que se desea modificar, Formulario en el que se encuentra el ComboBox, Valor Booleano Verdadero indica que desplegará la lista (como hacer un click en el Combobox), en caso de falso, no mostrará la lista
No lo he probado con un DataCombo o DataList porque no los utilizo, habría que entrar a provar... pero por lo menos, funciona :)
nos vemos!
Código:
Option Explicit
Private Const CB_SHOWDROPDOWN = &H14F
Private Const CB_GETITEMHEIGHT = &H154
Private Type POINTAPI
x As Long
y As Long
End Type
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
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 GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long
Private Declare Function ScreenToClient Lib "user32" (ByVal hWnd As Long, lpPoint As POINTAPI) As Long
Public Sub ModificarAlto(lngNumReg As Long, cbo As ComboBox, frmT As Form, Desplegar As Boolean)
Dim pt As POINTAPI
Dim rc As RECT
Dim cWidth As Long
Dim newHeight As Long
Dim oldScaleMode As Long
Dim numItemsToDisplay As Long
Dim itemHeight As Long
Const CB_SHOWDROPDOWN = &H14F
Const CB_GETITEMHEIGHT = &H154
numItemsToDisplay = lngNumReg
oldScaleMode = frmT.ScaleMode
frmT.ScaleMode = vbPixels
cWidth = cbo.Width
itemHeight = SendMessage(cbo.hWnd, CB_GETITEMHEIGHT, 0, ByVal 0)
newHeight = itemHeight * (numItemsToDisplay + 2)
Call GetWindowRect(cbo.hWnd, rc)
pt.x = rc.Left
pt.y = rc.Top
Call ScreenToClient(frmT.hWnd, pt)
Call MoveWindow(cbo.hWnd, pt.x, pt.y, cbo.Width, newHeight, True)
If Desplegar = True Then
Call SendMessage(cbo.hWnd, CB_SHOWDROPDOWN, True, ByVal 0)
End If
frmT.ScaleMode = oldScaleMode
Set frmT = Nothing
Set cbo = Nothing
End Sub