Sere breve...
Hay alguna forma de que la lista que desplega un combobox sea más larga, algo similar a lista que se muestra en WinXp para cambiar la zona horaria...
de antemano. gracias
| |||
| Changing the Combo Dropdown Height Hola Ramoncito Revisa este link: http://vbnet.mvps.org/index.html?cod...omboheight.htm Espero te sirva y tengas más suerte que yo, que llevo meses intentando cambiar la altura de un datacombo... y no lo logro. Y al parecer nadie puede orientarme. http://www.forosdelweb.com/f69/datacombo-visibleitems-property-327361/ http://www.forosdelweb.com/f69/datacombo-controlar-altura-del-menu-desplegado-321877/ Saludos |
| ||||
| Nos Respondemos 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
__________________ :pensando: Ramon Martinez... Chile :adios: |