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

No arrays de OptionButtons

Estas en el tema de No arrays de OptionButtons en el foro de Visual Basic clásico en Foros del Web. Si tengo una gran cantidad de OptionButtons y quiero guardar en una variable la propiedad Caption, del OptionButton que este chequeado (o sea, que tenga ...
  #1 (permalink)  
Antiguo 10/04/2005, 11:55
 
Fecha de Ingreso: junio-2004
Mensajes: 392
Antigüedad: 19 años, 10 meses
Puntos: 0
No arrays de OptionButtons

Si tengo una gran cantidad de OptionButtons y quiero guardar en una variable la propiedad Caption, del OptionButton que este chequeado (o sea, que tenga su propiedad .Value = True). Pense que puedo hacer un bucle, pero para esto necesido hacer un array con estos controles. No es que no quiera hacerlo, pero me preguntaba si habria otra forma, porque pueda ser que ya les haya puesto un nombre diferente a cada OptionButton. Pense en si se podia acceder a ellos como si el conjunto fuera un control (ya que trabajan como un grupo) y decirle a visual basic que de ese grupo el que tenga activado, ese es con el que queremos hacer la accion.

Que me dicen?
  #2 (permalink)  
Antiguo 10/04/2005, 20:09
 
Fecha de Ingreso: marzo-2005
Mensajes: 51
Antigüedad: 19 años, 1 mes
Puntos: 0
Prueba con esto

Dim tControl as Control

For Each tControl in Me.Controls
If TypeOf tControl is OptionButton then
If tContro.Value = True then
........
End If
End If
Next
  #3 (permalink)  
Antiguo 10/04/2005, 22:59
 
Fecha de Ingreso: junio-2004
Mensajes: 392
Antigüedad: 19 años, 10 meses
Puntos: 0
Gracias "Bebita" , eso funciona de maravilla.
  #4 (permalink)  
Antiguo 11/04/2005, 06:34
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Pero ni es lo que has preguntado ni es correcto, porque ese código implica que todo "Me", el formulario en teoría, es evaluado... ¿Y si tienes más de un grupo?

Un array de VB se inicializa con la propiedad Index del propio editor, y entonces harías:

Código:
Dim i As Integer
For i = 0 To X Then
  If ConjuntoOptions(i).Value = True Then
    ...
  End If
Loop
Siendo X el número de options que haya... No recuerdo si se puede deducir automáticamente con alguna función.
  #5 (permalink)  
Antiguo 11/04/2005, 20:41
 
Fecha de Ingreso: junio-2004
Mensajes: 392
Antigüedad: 19 años, 10 meses
Puntos: 0
Sip, eso tambien funciona, pero tendria que tomarme de que todos los OptionButtons tengan el mismo nombre + el indice. Mientras de la forma que explica la "Bebecita" no tengo que preocuparme por ese detalle. Y estoy seguro de que si hay alguna forma para saber la cantidad de OptionButtons que hay en el formulario para asi darle valor a la X en tu codigo, y me parece que se puede hacer con Me.

Pero gracias por tu otra idea, eso es bueno. Hay miles de formas de hacer lo mismo, es uno quien tiene que decidir cual considera mejor.
  #6 (permalink)  
Antiguo 12/04/2005, 07:03
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por Iodem Asakura
Sip, eso tambien funciona, pero tendria que tomarme de que todos los OptionButtons tengan el mismo nombre + el indice. Mientras de la forma que explica la "Bebecita" no tengo que preocuparme por ese detalle. Y estoy seguro de que si hay alguna forma para saber la cantidad de OptionButtons que hay en el formulario para asi darle valor a la X en tu codigo, y me parece que se puede hacer con Me.

Pero gracias por tu otra idea, eso es bueno. Hay miles de formas de hacer lo mismo, es uno quien tiene que decidir cual considera mejor.
Gracias, pero la publiqué porque precisamente la forma de Bebecita _NO_ es correcta: Imagina que tienes por ejemplo 4 grupos de 4 OptionsButtons. Cada uno para una cosa diferente. Si usas el código de Bebecita, comprobarás que no sirve porque revisa _todos_ y cada uno de los Options _de todo el form_, y a ti solo te interesa revisar los de un grupo determinado. Eso se hace con los índices. A cada grupo le das un nombre y tendrán el índice de 0 a 3. Funcionará correctamente. Es la manera "buena" de hacerlo.

Por otra parte... Si copias y pegas los Options, creo recordar que el índice se establecía correctamente. En resumen: más rápido, correcto y más ordenado.
  #7 (permalink)  
Antiguo 12/04/2005, 09:43
 
Fecha de Ingreso: marzo-2005
Mensajes: 51
Antigüedad: 19 años, 1 mes
Puntos: 0
Ok, MaxExtreme, respeto tu opinión, de hecho cuando yo trabajo con OptionsButtons los agrupos y le asigno indices, de esta forma puedo trabajarlos utilizando un ejemplo como el que mostraste.
Otra cosa, la respuesta que di creo que solventa lo que pregunta Iodem Asakura, a pesar de que no deba hacerse de esa forma, en este caso habria que recomendarle a Iodem Asakura que cambie su forma de trabajar con los OptionsButtons para que los utilice en forma correcta, que es agrupandolos y asignadoles indices.
  #8 (permalink)  
Antiguo 12/04/2005, 10:00
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por Bebecita
Ok, MaxExtreme, respeto tu opinión, de hecho cuando yo trabajo con OptionsButtons los agrupos y le asigno indices, de esta forma puedo trabajarlos utilizando un ejemplo como el que mostraste.
Otra cosa, la respuesta que di creo que solventa lo que pregunta Iodem Asakura, a pesar de que no deba hacerse de esa forma, en este caso habria que recomendarle a Iodem Asakura que cambie su forma de trabajar con los OptionsButtons para que los utilice en forma correcta, que es agrupandolos y asignadoles indices.

Gracias Poca gente valora las correciones
Por otra parte, yo lo decía porque supongo que alguna otra vez añadiría otro grupo y se encontraría con que fallaba algo. Así lo hacemos bien desde el primer momento y nunca habrá problemas ;)
  #9 (permalink)  
Antiguo 12/04/2005, 20:09
 
Fecha de Ingreso: junio-2004
Mensajes: 392
Antigüedad: 19 años, 10 meses
Puntos: 0
Ambos tienen razon, me equivoque al no pensar en que en algun momento (como ya he hecho en otros programas) tendria varios grupos de OptionButtons. Lo que pasa es que me centre en el caso que me ocupa actualmente.

Por cierto, por agruparlos, quieren decir ponerlos en frames diferentes solamente (porque asi es como lo hacia) o hay alguna otra forma, para poder tener varios grupos independientes dentro del mismo frame? Gracias por su ayuda
  #10 (permalink)  
Antiguo 13/04/2005, 06:30
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por Iodem Asakura
Ambos tienen razon, me equivoque al no pensar en que en algun momento (como ya he hecho en otros programas) tendria varios grupos de OptionButtons. Lo que pasa es que me centre en el caso que me ocupa actualmente.

Por cierto, por agruparlos, quieren decir ponerlos en frames diferentes solamente (porque asi es como lo hacia) o hay alguna otra forma, para poder tener varios grupos independientes dentro del mismo frame? Gracias por su ayuda
Pues no lo sé. Tampoco lo he visto nunca... Habrá alguna manera, "engañando", ocultando el frame pero no sus elementos... Supongo que más de uno habrá colocado un par de Rectangles encima para taparlo, haciendo que el Frame quedase detrás (por defecto siempre se pinta delante).
  #11 (permalink)  
Antiguo 13/04/2005, 19:54
 
Fecha de Ingreso: junio-2004
Mensajes: 392
Antigüedad: 19 años, 10 meses
Puntos: 0
Bueno, esta bien, eso no es muy importante, con lo que me han ayudado es suficiente. Gracias
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 20:56.