Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: novalida en 29 Noviembre 2010, 23:47 pm



Título: Duda con ComboBox [SOLUCIONADO]
Publicado por: novalida en 29 Noviembre 2010, 23:47 pm
Muy buenas,
¿se puede asociar a los item de un ComboBox un valor numérico?

Por ejemplo, una lista de empleados que tienen IDs no consecutivos, accediendo por el nombre, pero pudiendo tener acceso al ID del empleado.

Otro ejemplo sería de un ComboBox pero de los meses del año, pero éste ya sería más fácil, pues a través del método ListIndex + 1 se podría solucionar, pues aquí, lo índices sería consecutvos.

He intentado asociar cada elemento a un dato así, pero no lo veo claro:
Código:

        .AddItem ("Enero")
        .ItemData(Me.Combo1.NewIndex) = 1
        .AddItem ("Febrero")
        .ItemData(Me.Combo1.NewIndex) = 2
        .AddItem ("Marzo")
        .ItemData(Me.Combo1.NewIndex) = 3
        .AddItem ("Abril")
        .ItemData(Me.Combo1.NewIndex) = 4


Al seleccionar el valor de Enero, por ejemplo, me sale el índice real 0, no 1 :S
La verdad que tengo la duda de saber si se puede hacer fácilmente con los métodos proporcionados por Visual Basic 6.0, ¿alguien me puede dar una idea?

Saludos!!!


Título: Re: Duda con ComboBox
Publicado por: novalida en 30 Noviembre 2010, 00:10 am
Buenas.... :D
me respondo yo mismo, que he dado con la repuesta justo después de preguntar aquí y haberme pasado un buen rato dándole vueltas sin saber qué hacía mal.
El problema estaba en el acceso a los dato asociado a ese "item".
El código de ejemplo de los meses quedaría de ésta manera.

Código:

Private Sub Form_Load()
    Call cargarmeses(Me.Combo1)
End Sub

Public Sub cargarmeses(oComboBox As ComboBox)
    With oComboBox
        .AddItem ("Enero")
        .ItemData(Me.Combo1.NewIndex) = 1
        .AddItem ("Febrero")
        .ItemData(Me.Combo1.NewIndex) = 2
        .AddItem ("Marzo")
        .ItemData(Me.Combo1.NewIndex) = 3
        .AddItem ("Abril")
        .ItemData(Me.Combo1.NewIndex) = 4
        .AddItem ("Mayo")
        .ItemData(Me.Combo1.NewIndex) = 5
        .AddItem ("Junio")
        .ItemData(Me.Combo1.NewIndex) = 6
        .AddItem ("Julio")
        .ItemData(Me.Combo1.NewIndex) = 7
        .AddItem ("Agosto")
        .ItemData(Me.Combo1.NewIndex) = 8
        .AddItem ("Septiembre")
        .ItemData(Me.Combo1.NewIndex) = 9
        .AddItem ("Octubre")
        .ItemData(Me.Combo1.NewIndex) = 10
        .AddItem ("Noviembre")
        .ItemData(Me.Combo1.NewIndex) = 11
        .AddItem ("Diciembre")
        .ItemData(Me.Combo1.NewIndex) = 12
    End With
End Sub

Private Sub Combo1_Click()
    MsgBox (Me.Combo1.ItemData(Me.Combo1.ListIndex))
End Sub



Espero que a alguien le pueda ayudar :D