Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Problema Para Obtener El índice De Los Items En Un Array De Combobox
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Problema Para Obtener El índice De Los Items En Un Array De Combobox 
 
Hola a todos.
Siento abusar nuevamente de vuestra ayuda. Estoy tratando de traducir un programa que hice en VB6, pero dada la forma de funcionar de gambas (3.0), estoy encontrando bastantes zancadillas en el camino.

Me gustaría saber cómo puedo hacer para que al pinchar sobre un item de un combobox obtenga el índice de dicho item
Cuando hay un solo combobox, no tengo problemas   :
PUBLIC SUB ComboBox1_Change()
   Texto.Text = Color[ComboBox1.Index]
END


Pero, ¿cómo lo hago cuando son varios los combobox, es decir tengo un array de combobox?

Os pongo en antecedentes mostrando el código que tengo ya pasado:

He de comentar que los textos de los label y las opciones del combobox las cargo con variables contenidas en un fichero externo .conf


' declaramos la variable de clase que nos permitirá tener el fichero .conf donde le digamos
 Public mysettings As Settings

' declaramos como objetos para luego manejar los arrays de labels y de combobox
 Public un_objeto As Object
 Public otro_objeto As Object

Public Sub Form_Open()
' declaramos todas la variables según su tipo
 Dim count As Integer
 Dim vara As Integer
 Dim xasi As Integer
'  centramos el formulario en la pantalla
 Me.Center
' ponemos título al formulario
 Me.Title = "xxxxx 1.0"
' indicamos el lugar donde la nueva variable settings puede encontrar el archivo xxxx.conf
mysettings = New Settings(Application.path &/ "xxxx.conf")
' aquí se cargan los textos desde el fichero xxxx.conf a los labels
  For Each un_objeto In Me.Controls
    If un_objeto Is Label Then un_objeto.Text = mysettings["opciones/value[" & un_objeto.tag & "]"]
  Next
'   aquí se cargan las opciones desde el archivo .conf a todos los combobox del form
  For Each otro_objeto In Me.Controls
   If otro_objeto Is ComboBox Then
    otro_objeto.text = "??"
     vara = (mysettings["combo" & otro_objeto.tag & "/count"])
       For xasi = 0 To vara - 1
          otro_objeto.add(mysettings["combo" & otro_objeto.tag & "/value" & xasi])
        Next
    End If
 Next
 End


Perdonad que no utilice las etiquetas de "code" del foro (me manejo mal)
(Mensaje editado)

Gracias de antemano.
 



 
última edición por kitoko el Lunes, 31 Marzo 2014, 19:05; editado 5 veces 
kitoko - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Para Obtener El índice De Los Items En Un Array De Combobox 
 
Citar:
pero dada la forma de funcionar de gambas (3.0),...

Tu problema es que estás "maleado" por el VB6...     

Siempre puedes obtener el control que disparó el último evento con last.
Aquí tienes un ejemplo con un array de botones.

DIM hButton[3] AS Button

hButton[0] = NEW Button(ME) AS "MyButtons"
hButton[0].Text = "Rojo";

hButton[1] = NEW Button(ME) AS "MyButtons"
hButton[1].Text = "Verde"

hButton[2] = NEW Button(ME) AS "MyButtons"
hButton[2].Text = "Azul"

...

PUBLIC SUB MyButtons_Click()

  PRINT LAST.Text

END


Cambia Button por comboBox y LAST.text por LAST.index y ya lo tienes.

Suerte
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Para Obtener El índice De Los Items En Un Array De Combobox 
 
kitoko escribió: [Ver mensaje]

Perdonad que no utilice las etiquetas de "code" del foro (me manejo mal)



Es muy fácil, hay un icono encima de donde se escribe como "C#", el segundo por la izquierda. Puedes seleccionar todo el bloque de código y pulsar el botón o bien pulsarlo una vez al principio del bloque de código y otra vez al final.

En cuanto a tu problema con los combobox, como bien has hecho, desde el evento Click http://gambasdoc.org/help/comp/gb.qt4/combobox/.click?es&v3

Puedes obtener el índice mediante la propiedad .Index por ejemplo desde el evento click o change.

Pero si tienes muchos comboboxes, puede ser tedioso crear manejadores de eventos para cada uno y repetir el mismo código una y otra vez. Lo mejor es agrupar todos los combos en un grupo y crear un manejador de eventos común a ese grupo y usar la palabra clave Last para obtener una referencia al último control que ha generado el evento:

Public migrupodecombos_Click()

    Print Last.Index; Last.Name ' para depurar lo que estamos haciendo

End


No olvides asignar la propiedad Group a todos los controles que tengan que estar agrupados.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Para Obtener El índice De Los Items En Un Array De Combobox 
 
Citar:
Tu problema es que estás "maleado" por el VB6...     


Tienes razón Shordi. Desintoxicarme de todo lo que sea relacionado con Windows, me va a llevar algo de tiempo.
A eso únele que VB es el único lenguaje que he aprendido y usado (no soy programador, sino un aficionado autodidacta).
Bueno, pero también tiene su parte positiva, y es que VB te da una base para manejar y "medioentender" gambas, dicho sea de paso.

Al final lo he hecho así:

Public Sub combos_click()
Print Last.Index
End


En donde "combos" es el nombre de grupo que le he dado a cada uno de los comboboxes.

Muchas gracias a los dos.
 



 
kitoko - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron