Quiz in Visual Basic?

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.

Woher ich das weiß:Berufserfahrung – Software-Entwickler

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.