¿Cómo puedo crear una aplicación con múltiples preguntas con Visual Basic?

De todoexpertos ! Bueno mi pregunta creo que es algo sencilla
lo que quiero hacer es ... Un "programa" que tenga Múltiples preguntas ej.
Que sea unas 5 preguntas por página ... Con la opción checkbox o optionbutton no se cual sera la adecuada ... Pero bueno el problema es que necesito un botón "siguiente" y que pase a otra página con más preguntas ... Si alguien pudiera ayudarme estaría muy agradecido !

1 respuesta

Respuesta
1
Se me ocurre una idea de resolver tu pregunta:
1.- Crear un formulario por cada "página" que quieres [FrmPagina1, FrmPagina2, etc.].
2.- Escribir cada una de las preguntas utilizando una etiqueta [Label].
3.- Para cada respuesta posible colocar un OptionButton [esto si cada pregunta sólo tiene una y sólo una respuesta], un dato importante es que debes colocar cada conjunto de OptionButtons dentro de un marco [Frame], esto con la finalidad de que te seleccione sólo uno por cada conjunto, si no los colocaras así te seleccionaría sólo uno por cada formulario.
4.- En alguna parte de cada formulario colocar un par de botones [CommandButton] con Caption "Anterior" y "Siguiente" que servirán al usuario para "desplazarse" a través de las "páginas" para ver las preguntas y responderlas [Obviamente no es necesario poner un botón "Anterior" en el primer formulario" y tampoco un "Siguiente" en el último formulario].
5.- Al ejecutar el programa mostrarás la primer página de preguntas [FrmPagina1].
6.- Al finalizar de responder la primer página [aunque no es necesario que aún no la finalice, es decir, puede "navegar" a través de las "páginas" para ver las demás preguntas, a veces uno no anda inspirado para responder una pregunta en particular pero es posible que sí lo ande para las preguntas de otra "página"] el usuario presionará el botón "Siguiente" y ocurrirá esto: se ocultará la página actual y se mostrará la siguiente página, ¿cómo hago esto? Es muy sencillo, supongamos que nuestros botones "Siguiente" se llaman "CmdSiguiente":
     Private Sub CmdSiguiente
          FrmPagina1.Hide
          FrmPagina2.Show
     End Sub
[utilizarás el "Hide" en lugar del "Unload" para preservar los valores Ya capturados] Y así sucesivamente para ir avanzando a las demás "páginas". Para retroceder a la página anterior sería algo similar:
     Private Sub CmdAnterior
          FrmPagina2.Hide
          FrmPagina1.Show
     End Sub
[Recurda cambiar el número correspondiente al formulario que deseas mostrar u ocultar]
Espero que te sea de utilidad, estoy asumiendo que sabes programación básica en VB 6.0, si tienes alguna duda o requieres de más detalles consúltame de nueva cuenta.
Saludos desde México, Juan Pablo E. P.
Saludos Juan Pablo ! Muchas gracias por responder me sirvió de mucho tu ayuda.
Te quiero poner más claro lo que trato de hacer ... es un tipo de ... "Cuando Me Conoces"
Y la idea es que, cada respuesta correcta tenga cierta "puntuacion" para que al terminar una especie de ... 10 preguntas sakar un resultado y dependiendo del resultado emita una respuesta en una label. Si tienes ideas o algo con lo que me podrías ayudar serian muy bien recibidas ! Gracias !
Saludos desde Chile, Joel H
Siendo así, podría poner el valor de la pregunta en la propiedad "tag" de cada OptionButton e ir sumando conforme el usuario vaya dando clic en cada opción, la forma más fácil que se me ocurre es crear matrices de controles por cada marco [frame], pondré un ejemplo:
En la pregunta uno hay 5 respuestas posibles que se escribirán en la propiedad "caption" de los OptionButton [matriz de controles "OptR1" - OptionButton para la respuesta 1], colocaré los valores de cada respuesta [puntuación] debajo de cada una de éstas [obviamente esto no lo escribirás en los formularios de tu aplicación, y sí en cambio lo pondrás en la propiedad "tag" de cada OptionButton].
1.- Esta es la pregunta uno:
()R1 ()R2 ()R3 ()R4 (*)R5
3 5 0 1 2
Supongamos que el usuario selecciona la respuesta "5", entonces internamente tú "sabes" que su puntuación es "2" gracias a que almacenaste ese valor [en tiempo de diseño] en la propiedad "tag" y la puedes usar para ir acumulando ese valor en una variable pública [que en este caso llamaré "Acumulado"] y obtener un resultado final, ¿Cómo? De la siguiente forma:
Private Sub OptR1_Click(Index As Integer)
     Acumulado = Acumulado + OptR1(index).Tag
End Sub
Colocarías ese código en cada uno de los grupos de OptionButton, al final tendrás una suma de puntuaciones en la variable "Acumulado", ésta la puedes mostrar como tú lo desees [usando un label en un formulario, un mensaje, etc. es cuestión de gustos], esto en caso de que el usuario sólo avance hacia adelante de las respuestas, si va seleccionando y regresando por las preguntas, estoy seguro que la puntuación se elevará, en la siguiente respuesta te resuelvo con otra forma para hacerlo.
Saludos desde México, Juan Pablo E. P.
Este otro método es "infalible", se debe seguir el mismo procedimiento que el anterior solamente cambia una cosa, es decir, se utilizarán OptionButtons que almacenarán la puntuación en la propiedad "tag", pero en vez de evaluarlos al momento que se seleccionan, serán evaluados al final con un CommandButton [CmdEvaluar], esto se hará de la siguiente forma:
Private Sub CmdEvaluar_Click()
    Dim Acumulado  As Integer
    With FrmPagina1
        For i = 0 To .Controls.Count - 1
            If TypeOf .Controls(i) Is OptionButton Then
                If .Controls(i).Value = True Then
                    Acumulado = Acumulado + .Controls(i).Tag
                End If
            End If
        Next i
    End With
    With FrmPagina2
        For i = 0 To .Controls.Count - 1
            If TypeOf .Controls(i) Is OptionButton Then
                If .Controls(i).Value = True Then
                    Acumulado = Acumulado + .Controls(i).Tag
                End If
            End If
        Next i
    End With
    '... y así sucesivamente para las demás "páginas" [FrmPagina3, FrmPagina4, etc.]
    MsgBox "Su puntuación final es: " & Acumulado, vbInformation, "Resultado"
End Sub
Espero te sea de utilidad, y recuerda que si tienes una duda o definitivamente necesitas un ejemplo terminado podría ayudarte [nada más no abuses, inténtalo sólo primero].
Saludos desde México, Juan Pablo E.P.
Bueno hace un tiempo que no me había podido conectar, ahora vi tu respuestas y tava muy buena me ayudo mucho. Ahora ya termine esta pregunta muchas gracias por tu ayuda !
:D

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas