Ich muss für meinen Informatikkurs ein Quiz programmieren und weiß leider nicht wie ich einbaue, dass das Programm abfragt, welcher RadioButton geklickt wurde.
Bis jetzt habe ich dies:
with Frage[random(Length(Frage))] do begin
if (not schonGefragt) and (Kategorie=1) then
begin
RadioGroup1.Caption := Frage;
Radiobutton1.Caption := Antworten[1];
Radiobutton2.Caption := Antworten[2];
Radiobutton3.Caption := Antworten[3];
Radiobutton4.Caption := Antworten[4];
schonGefragt:=True;
a:=richtige_Antwort;
b:=Antworten[a];
if (Sender is TRadiobutton) then
if (Radiobutton1.caption=b) and (Radiobutton1.checked) or
(Radiobutton2.caption=b) and (Radiobutton2.checked) or
(Radiobutton3.caption=b) and (Radiobutton3.checked) or
(Radiobutton4.caption=b) and (Radiobutton4.checked)
then smr else sf;
end;
end;
Wenn ich Sender herausnehme, kommt sofort eine Showmessage mit "Leider falsch" (sf). Mit Sender macht er leider gar nichts. Kann mir dabei bitte jemand helfen?
Ich frage ab, ob die Caption die der richtigen Antwort ist. Ja, hatten wir, hab es jetzt stundenlang probiert gehabt und verzweifle ein bisschen... Mein Problem ist eigentlich auch nur, warum er bei Sender is TRadioButton gar nicht auf einen Klick reagiert.
procedure TForm1.ButtonNeueFrageClick(Sender: TObject);
begin
FrageNr := random(Length(Frage));
with Frage[FrageNr] do begin
Label1.Caption := Frage;
RadioButton1.Caption := Antworten[0];
RadioButton2.Caption := Antworten[1];
RadioButton3.Caption := Antworten[2];
RadioButton4.Caption := Antworten[3];
schonGefragt := True;
end;
end;
procedure TForm1.ButtonTestenClick(Sender: TObject);
procedure Test(a: boolean);
begin
if a then begin
ShowMessage('richtig');
end else begin
ShowMessage('falsch');
end;
end;
begin
case Frage[FrageNr].richtige_Antwort of
0: begin
Test(RadioButton1.Checked);
end;
1: begin
Test(RadioButton2.Checked);
end;
2: begin
Test(RadioButton3.Checked);
end;
3: begin
Test(RadioButton4.Checked);
end;
end;
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot