Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Problem bei Quiz - Punkte zählen


M - Mi 21.03.07 11:16
Titel: Problem bei Quiz - Punkte zählen
Hi, hab ein Problem. Muss für die Schule ein Quiz erstellen. An sich ist s fast fertig, wir müssen nur noch die Punkte zählen lassen. Problem is, wi bekomme ich heraus, welchen Button der user angeklickt hat?
Bitte um schnelle Antwort!!!


UGrohne - Mi 21.03.07 11:20

Wie ist denn das Quiz aufgebaut? RadioButtons, CheckBoxen? Eigentlich musst Du nur beispielsweise mittels CheckBox1.Checked auslesen, ob eine CheckBox angehakt wurde und überprüfen, ob das so korrekt ist. Danach kannst Du Punkte vergeben.

Und bitte ändere den Titel des Threads, denn der sagt nicht wirklich etwas über Deine Frage aus.


M - Mi 21.03.07 11:23

Das Quiz is mit normalen Buttons. Wenn ein Button angeklickt wurde, dann soll kontrolliert werde, ob die Antwort richtig is oder nicht.


ZeitGeist87 - Mi 21.03.07 11:28

Hallo!

Wie ist das Quiz denn aufgebaut?
Über Records?

Wie läuft das Ganze ab?
Jede Frage ne neue Form oder werden einfach die Buttons, etc. aktualisiert?

LG
Stefan


UGrohne - Mi 21.03.07 11:42

user profile iconM hat folgendes geschrieben:
Das Quiz is mit normalen Buttons. Wenn ein Button angeklickt wurde, dann soll kontrolliert werde, ob die Antwort richtig is oder nicht.

Dann musst Du natürlich einen entsprechenden Event Handler schreiben. Klicke dazu einfach auf einen der Buttons doppelt drauf, dann kannst Du dort überprüfen, ob es der richtige Button war, oder nicht und dementsprechend einen Punkt geben oder nicht.

Mittels des Sender-Parameters dieses Event Handlers kannst Du dann alles auch eine Prozedur packen. Du weißt dann jedem Button einfach die Prozedur als Event Handler für OnClick zu und überprüfst, welcher Button geklickt wurde, beispielsweise mit folgendem Code:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure ButtonClick(Sender:TObject);
var richtigerButton: TButton;
begin
  //Welcher Button ist der richtige?
  //Hier definieren, welcher Button geklickt sein müsste
  richtigerButton := Button1;
  if (Sender = richtigerButton) then
    Inc(punkte); //Er bekommt einen Punkt, weil er den richtigen Button (siehe Zuweisung oben)
                 //geklickt hat
end;

Die Variable kannst Du natürlich auch global deklarieren, dann kannst Du sie in einer Initialisierungs-Prozedur, wo Du beispielsweise die Texte der Buttons änderst, setzen.


M - Mi 21.03.07 11:57

also wir haben das jetzt so gemacht, dass es mit checkboxen arbeitet.
allerdings ist dadurch ein neues problem aufgetreten.
und zwar kann man jetzt die antwort anklicken und die punkte werden wahrscheinlich auch gezählt, aber das programm springt nicht zur nächsten frage..
wie kann man das jetzt noch lösen?


ZeitGeist87 - Mi 21.03.07 12:04

Beantworte die Fragen in meinem Post und wir können euch helfen!

LG
Stefan


Comp-Freak - Mi 21.03.07 12:10

sehr einfach und sehr lang:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
var
frage: integer;
richtig: integer;

on some form create:
label1.caption := listbox1.items.strings(0);
antwort := listbox2.items.strings(0);

on antwort button click:
if checkbox1.checked = true then 
 begin
 // Checken ob richtig
 if antwort = 1 then richtig := richtig+1;
 // Nachste Frage
 frage := frage+1;
 label1.caption := listbox1.items.strings(frage);
 antwort := listbox2.items.strings(frage);
 end;
if checkbox2.checked = true then 
 begin
 // Checken ob richtig
 if antwort = 2 then richtig := richtig+1;
 // Nachste Frage
 frage := frage+1;
 label1.caption := listbox1.items.strings(frage);
 antwort := listbox2.items.strings(frage);
 end;
if checkbox3.checked = true then 
 begin
 // Checken ob richtig
 if antwort = 3 then richtig := richtig+1;
 // Nachste Frage
 frage := frage+1;
 label1.caption := listbox1.items.strings(frage);
 antwort := listbox2.items.strings(frage);
 end;


stat dehn zwei listboxen gehen naturlich auch stringlists.

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt