Code using check boxes to select more than answer

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Mohammed Mazid

    #1

    Code using check boxes to select more than answer

    Hi folks!

    Can anyone please help me with this?

    I am developing a Quiz program but I am stuck with "multiple answers".
    Basically I need some sort of code that would select multiple answers
    using check boxes.

    For example, a question such as

    Which two of the following are relational databases?
    A. Oracle
    B. UML
    C. ODBC
    D. Ingres

    It should track as A and D.

    Can anyone please show a code that would track them two answers?

    Also, how does the question bank (in the form of a database) looks
    for; i.e. How do you store multiple answers in a database so VB tracks
    those answers?

    Thanks for your help
  • Shafiq ur Rehman

    #2
    Re: Code using check boxes to select more than answer

    > Can anyone please show a code that would track them two answers?

    no one will show you the complete code, as people donot have enough
    time for writing the whole code, be specific yaar.

    Comment

    • Shafiq ur Rehman

      #3
      Re: Code using check boxes to select more than answer

      you can see this group for help


      Comment

      • Larry Serflaten

        #4
        Re: Code using check boxes to select more than answer

        "Mohammed Mazid" <kadmazid@hotma il.com> wrote in message[color=blue]
        > Hi folks!
        >
        > Can anyone please help me with this?
        >
        > I am developing a Quiz program but I am stuck with "multiple answers".
        > Basically I need some sort of code that would select multiple answers
        > using check boxes.[/color]

        See if you can learn from the following code. Add a Checkbox to a new
        form and set its Index property to 0, then add a Command button to the
        form and paste in the code below. I've left Debug statements in, so
        watch the debug window for clues.

        HTH
        LFS

        Option Explicit

        Private Type MyRecordType
        A As String
        B As String
        C As String
        D As String
        E As String
        F As String
        Q As String
        Z As Long
        End Type

        Private Type MyQuestionType
        A As String
        B As String
        C As String
        D As String
        Q As String
        Z As Long
        End Type

        Dim Records(0 To 2) As MyRecordType
        Dim Question As MyQuestionType
        Dim QCount As Long



        Private Sub Form_Load()
        Dim i

        Randomize
        Show

        ' These are your DB records
        With Records(0)
        .Q = "Which of these are colors"
        .A = "Red" ' 1
        .B = "White" ' 2
        .C = "Blue" ' 4
        .D = "Car" ' 8
        .E = "House" ' 16
        .F = "Plane" ' 32
        .z = 7 ' 1 + 2 + 4 (Right answers)
        End With

        With Records(1)
        .Q = "Which of these are numbers"
        .A = "Two"
        .B = "One"
        .C = "Tree"
        .D = "Red"
        .E = "Plant"
        .F = "Man"
        .z = 3
        End With

        With Records(2)
        .Q = "Which of these are mostly water"
        .A = "Lake"
        .B = "River"
        .C = "Car"
        .D = "Key"
        .E = "House"
        .F = "Fan"
        .z = 3
        End With

        Command1.Move 120, 1800, 1200, 480

        ' Make more checkboxes
        For i = 0 To 3
        If i Then
        Load Check1(i)
        Check1(i).Visib le = True
        End If
        Check1(i).Move 220, i * 300 + 400, 4000, 300
        Next i

        GenerateQ
        ShowQ

        End Sub



        Private Sub Command1_Click( )
        Dim z, i

        Select Case Command1.Captio n
        Case "Guess"
        ' Tally answer
        For i = 0 To 3
        If Check1(i).Value = vbChecked Then
        z = z Or (2 ^ i)
        End If
        Next

        If z = Question.z Then
        Caption = "Correct!"
        Else
        Caption = "Wrong"
        End If
        Command1.Captio n = "Next"

        Case Else ' "Next"
        GenerateQ
        ShowQ
        End Select

        End Sub


        Private Sub ShowQ()
        With Question
        Cls
        PSet (90, 90)
        Print .Q

        Check1(0).Capti on = .A
        Check1(0).Value = vbUnchecked
        Check1(1).Capti on = .B
        Check1(1).Value = vbUnchecked
        Check1(2).Capti on = .C
        Check1(2).Value = vbUnchecked
        Check1(3).Capti on = .D
        Check1(3).Value = vbUnchecked
        End With

        Command1.Captio n = "Guess"
        Caption = "Answer question"

        End Sub


        Private Sub GenerateQ()
        Dim R As MyRecordType
        Dim quiz(0 To 3) As String
        Dim Txt As String
        Dim Cnt As Long, z As Long, used As Long
        Dim Que As Long
        Dim blank As MyQuestionType

        ' Pull next question from records
        QCount = QCount + 1
        If QCount > 2 Then QCount = 0
        R = Records(QCount)

        ' Init Question
        Question = blank
        Question.Q = R.Q


        Debug.Print vbCrLf & "Correct ansers:"

        ' Pick random # of right answers
        Cnt = Int(Rnd * 3) + 1

        Do While Cnt

        ' Pick random answer
        z = 2 ^ (Int(Rnd * 6))
        ' Test if a 'correct' answer AND not used
        If (R.z And z) > 0 And (used And z) = 0 Then

        ' Saved picked
        used = used Or z

        ' Pick random unused spot
        Do
        Que = Int(Rnd * 4)
        Loop Until Len(quiz(Que)) = 0

        ' Move to Quiz
        Select Case z
        Case 1
        quiz(Que) = R.A
        Case 2
        quiz(Que) = R.B
        Case 4
        quiz(Que) = R.C
        Case 8
        quiz(Que) = R.D
        Case 16
        quiz(Que) = R.E
        Case 32
        quiz(Que) = R.F
        End Select

        Debug.Print Que, quiz(Que)
        ' Decrement answer counter
        Cnt = Cnt - 1
        ' Test if all 'correct' answers picked
        If used = R.z Then Cnt = 0
        End If

        Loop

        'Remove all other correct answers
        used = used Or R.z

        Debug.Print Question.Q

        ' fill with guesses
        Cnt = 0
        For Que = 0 To 3

        If Len(quiz(Que)) = 0 Then
        ' Pick guess (wrong answer)
        Do
        z = 2 ^ (Int(Rnd * 6))
        Loop While (used And z) > 0

        ' Mark as used
        used = used Or z

        ' Move to Quiz
        Select Case z
        Case 1
        quiz(Que) = R.A
        Case 2
        quiz(Que) = R.B
        Case 4
        quiz(Que) = R.C
        Case 8
        quiz(Que) = R.D
        Case 16
        quiz(Que) = R.E
        Case 32
        quiz(Que) = R.F
        End Select

        Else
        ' Tally right answers
        Cnt = Cnt Or (2 ^ Que)
        End If

        Debug.Print Que, quiz(Que), 2 ^ Que
        Next
        Debug.Print "Right value >", , Cnt


        'Move to Question
        With Question
        .A = quiz(0)
        .B = quiz(1)
        .C = quiz(2)
        .D = quiz(3)
        .z = Cnt
        End With

        End Sub








        -----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
        http://www.newsfeeds.com - The #1 Newsgroup Service in the World!
        -----== Over 100,000 Newsgroups - 19 Different Servers! =-----

        Comment

        Working...