Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

ComboBox mas largo

Estas en el tema de ComboBox mas largo en el foro de Visual Basic clásico en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 18/11/2005, 00:45
Avatar de ramoncito  
Fecha de Ingreso: febrero-2003
Ubicación: Viña del Mar
Mensajes: 224
Antigüedad: 21 años, 2 meses
Puntos: 10
ComboBox mas largo

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
__________________
:pensando: Ramon Martinez... Chile :adios:
  #2 (permalink)  
Antiguo 18/11/2005, 07:48
jorevale
Invitado
 
Mensajes: n/a
Puntos:
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
  #3 (permalink)  
Antiguo 18/11/2005, 17:40
Avatar de ramoncito  
Fecha de Ingreso: febrero-2003
Ubicación: Viña del Mar
Mensajes: 224
Antigüedad: 21 años, 2 meses
Puntos: 10
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:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:13.