Quiz in Visual Basic?
Ich habe schon eine Idee wie ich dieses Quiz mache. Jedoch werden es ja nachher mehr als 20 Fragen sein, jedoch will ich keine 20 Formen machen...Wie kann ich das verhindern?
2 Antworten
Wenn du eine Form erstellst, erstellst du eigentlich eine Form-Vorlage (im Programmierer-Jargon: "Klasse").
Wenn die Form z. B. QuizForm heißt, kannst du mit
Dim QuizForms() As QuizForm
ReDim QuizForms(FragenAnzahl - 1)
For FrageIndex = 0 To FragenAnzahl - 1
Set QuizForms(FrageIndex) = New QuizForm
With QuizForms(FrageIndex)
.Caption = "Frage Nr. " + Format(FrageIndex + 1)
.FrageLabel.Caption = FrageText(FrageIndex)
...
End With
Next
Aufruf der einzelnen Forms mit
QuizForms(FrageIndex).Show vbModal
So sieht es für VBA6 aus (Excel, übrige Microsoft-Office-Programme, bevor Microsoft endlich mit VBA.NET zu Potte kommt).
Für VB.NET folgende Modifikationen:
.Caption -> .Text
.Show vbModal -> .ShowDialog()
Die Antwortauswahlen brauchen dann noch eine eigene Behandlung.
-----
Oder du nimmst einfach das Verfahren von ohwehohach und baust die Form für jede Frage dynamisch neu auf.
Ich gehe davon aus, dass es mit Radio-Buttons sein soll, so dass bei jeder Frage nur eine Antwort möglich ist?
Dann machst Du ein Formular, welches beispielsweise ein Label enthält, welches groß genug ist, um den Text einer jeden Frage anzuzeigen.
Darunter machst Du einen Bereich, in welchem Du dynamisch zu jeder Frage für jede Antwort einen Radiobutton einfügst.
Wann immer eine neue Frage angezeigt wird, änderst Du den Text im Label, entfernst die bisher vorhandenen Radio-Buttons und fügst neue ein.
Dann musst Du Dir nur noch in der Tag-Property jedes Radio-Button merken, ob dieser die richtige Antwort darstellt und kannst dann vor jeder neuen Frage prüfen, ob die richtige Antwort ausgewählt wurde.
Ist eventuell nicht ganz so einfach, wie Du Dir das denkst, aber 20 Forms für 20 Fragen ist definitiv nicht praktikabel. Obiges Verfahren kann dann auch für 10, 50 der 100 Fragen funktionieren, wenn Du die Fragen aus einer externen Datei einliest. Dann musst Du das Programm gar nicht mehr ändern.
Du kannst obiges Verfahren, wenn Du es mal umgesetzt hast, auch relativ einfach erweitern, so dass Du auch Multiple-Choice-Fragen unterstützen kannst. Dann musst Du pro Frage nur wissen, ob es nur eine oder mehrere richtige Antworten gibt.