Einzelnen Beitrag anzeigen

bcvs

Registriert seit: 16. Jun 2011
703 Beiträge
 
Delphi 12 Athens
 
#14

AW: Label aus anderer Unit verwenden

  Alt 17. Apr 2014, 08:16
Ich würde das sowieso etwas anders angehen:

Merke dir eine Grundregel: Visuelle Controls dienen nur zur Anzeige, nicht zum Speichern von Daten. In deinem Fall wird die aktuelle Anzahll der richtigen Antworten aber nur als Caption im Label Zahl gespeichert.

Überlege dir eine geeignete Datenstruktur für dein Quiz z.B.

Delphi-Quellcode:
var
QuizErgebnisse = record
  //.. ganz viele nützliche Felder
  AnzahlRichtig : integer;
end;
Dieser Record muss natürlich beim Programmstart oder vor einem neuen Spiel sinnvoll initialisiert werden.

Dein Form TErgebnisse erweiterst du um eine Methode, die die Anzahl derRichtigen Fragen entgegennimmt und irgendwie darstellt. Dabei kannst du dir auch die vielen einzelnen übereinanderliegenden Labels sparen:

Delphi-Quellcode:
procedure TErgebnisse.ShowErgebnis(AnzahlRichtig:integer);
begin
  Label.Caption:='Du hast '+IntToStr(AnzahlRichtig)+' / 10 Fragen richtig beantwortet!';
end;

In TFrage steht dann nur:

Delphi-Quellcode:
procedure TFrage1.SpeedButton2Click(Sender : TObject);
begin
  inc(QuizErgebnisse.AnzahlRichtig);
  Ergebnisse.ShowErgebnis(QuizErgebnisse.AnzahlRichtig);
end;
TFrage1 muss jetzt gar nicht wissen, wie TErgebnisse das Ergebnis anzeigt. Wenn du dafür später mal ein ganz anderes Control als ein Label nehmen wilst, brauchst du nur TErgebnisse.ShowErgebnis zu ändern.
  Mit Zitat antworten Zitat