![]() |
AW: Label aus anderer Unit verwenden
Zitat:
(Um den Counter wieder auf 0 zu setzen):
Code:
procedure TErgebnisse.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin n := StrToIntDef(Ergebnisse.Zahl.caption, 0); n := 0; Ergebnisse.Zahl.caption := IntToStr(n); end; |
AW: Label aus anderer Unit verwenden
Delphi-Quellcode:
Würde auch gehen.
procedure TErgebnisse.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin Ergebnisse.Zahl.caption := IntToStr(0); end;
Delphi-Quellcode:
Auch.
procedure TErgebnisse.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin Ergebnisse.Zahl.caption := '0'; end;
Delphi-Quellcode:
Würde aber auch gehen, wegen
procedure TErgebnisse.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin Ergebnisse.Zahl.caption := ''; end;
Delphi-Quellcode:
StrToIntDef(n, 0);
|
AW: Label aus anderer Unit verwenden
oder
Delphi-Quellcode:
Der Compiler hat aber bestimmt auch erwähnt, daß
procedure TErgebnisse.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin //n := StrToIntDef(Ergebnisse.Zahl.caption, 0); n := 0; Ergebnisse.Zahl.caption := IntToStr(n); end;
Delphi-Quellcode:
nicht verwendet wurde. (der Wert der ersten Zuweisung)
n
Vorallem, wozu sollte der alte Wert erst ausgelesen werden, wenn dann sowieso ein neuer/anderer Wert zugewiesen wird? ABER, WO um Himmels Willen ist
Delphi-Quellcode:
deklariert? :shock:
n
|
AW: Label aus anderer Unit verwenden
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:
Dieser Record muss natürlich beim Programmstart oder vor einem neuen Spiel sinnvoll initialisiert werden.
var
QuizErgebnisse = record //.. ganz viele nützliche Felder AnzahlRichtig : integer; end; 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:
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.
procedure TFrage1.SpeedButton2Click(Sender : TObject);
begin inc(QuizErgebnisse.AnzahlRichtig); Ergebnisse.ShowErgebnis(QuizErgebnisse.AnzahlRichtig); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz